数据库
首页 > 数据库> > php – 如何防止SQLITE SQLSTATE [HY000] [14]?

php – 如何防止SQLITE SQLSTATE [HY000] [14]?

作者:互联网

我有时收到以下错误:

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