标签:persistent php sqlite pdo
我有时收到以下错误:
SQLSTATE[HY000] [14] unable to open database file
我使用打开数据库
new PDO("sqlite:database/datbase.db","","",array(
PDO::ATTR_PERSISTENT => true
));
每次我想从数据库读取数据或向数据库写入数据.打开过程是以下功能:
function opendatabase(){
try{
return new PDO("sqlite:database/database.db","","",array(
PDO::ATTR_PERSISTENT => true
));
}catch(PDOException $e){
logerror($e->getMessage(), "opendatabase");
print "Error in openhrsedb ".$e->getMessage();
}
}
经过一段时间(某个时间超过一个小时,有些时候几分钟后我会收到帖子开头的错误信息.我怎样才能防止这样的错误?
解决方法:
这是来自SQLlite的错误:
#define SQLITE_CANTOPEN 14 / *无法打开数据库文件* /
您似乎已经打开了许多连接,我建议您重新连接,如果它是打开的.
创建一个属性:
private $pdo;
在创建新对象之前检查它是否为null:
function opendatabase(){
try{
if($this->pdo==null){
$this->pdo =new PDO("sqlite:database/database.db","","",array(
PDO::ATTR_PERSISTENT => true
));
}
return $this->pdo;
}catch(PDOException $e){
logerror($e->getMessage(), "opendatabase");
print "Error in openhrsedb ".$e->getMessage();
}
}
标签:persistent,php,sqlite,pdo 来源: https://codeday.me/bug/20190929/1833103.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。