我有时收到以下错误:
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();
}
}