Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO Sqlite错误5:数据库已锁定_Php_Sqlite_Pdo - Fatal编程技术网

Php PDO Sqlite错误5:数据库已锁定

Php PDO Sqlite错误5:数据库已锁定,php,sqlite,pdo,Php,Sqlite,Pdo,我一直在尝试使用sqlite数据库(带有PDO的php),但遇到了一个问题。一般来说,这些命令都可以工作,而且一切都很好(包括存储文件),但是由于某种原因,当我运行这两个命令时(这两个命令已经简化),我得到了错误 SQLSTATE[HY000]:一般错误:5数据库已锁定 我试了一段时间,但一直无法解决任何问题。代码如下 我做过的事情: 试图在命令之间设置睡眠(2) 发现注释其中一个命令将导致错误不会发生(这并没有真正的帮助,因为两个命令都必须运行) 请注意(与我在查看类似问题时看到的其他问题不同

我一直在尝试使用sqlite数据库(带有PDO的php),但遇到了一个问题。一般来说,这些命令都可以工作,而且一切都很好(包括存储文件),但是由于某种原因,当我运行这两个命令时(这两个命令已经简化),我得到了错误

SQLSTATE[HY000]:一般错误:5数据库已锁定

我试了一段时间,但一直无法解决任何问题。代码如下

我做过的事情:
试图在命令之间设置睡眠(2)
发现注释其中一个命令将导致错误不会发生(这并没有真正的帮助,因为两个命令都必须运行)

请注意(与我在查看类似问题时看到的其他问题不同),数据库在其他情况下运行正常

$db = new MyDB();

$STH = $db->catchMistakes('SELECT PASSWORD FROM USERS WHERE USERNAME = ?', "test");

$STH->fetchColumn();

$db->catchMistakes("UPDATE ISSUES SET NAME = ? WHERE NUM = ?", ["test", "1"]);
这是MyDB的代码

public function catchMistakes($cmd, $params = []) {

   if (!is_array($params)) {
       $params = [$params];
   }

    try {

        $DBH = new PDO("sqlite:" . DB);
        $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

        $DBH->beginTransaction();


        $query = $DBH->prepare($cmd);


        $toReturn = $query->execute($params);

        $DBH->commit();


        return $query;
    }
    catch(PDOException $e) {

        $DBH->rollback();

        $error = $e->getMessage();

        exit;
    }

} 

抱歉,如果有一个简单的解决办法,我在这方面是相当新的。非常感谢您的帮助。

您可以在PDOStatement对象上使用
closeCursor()
方法来释放与数据库的连接,以便执行该语句

您可以对PDOStatement对象使用
closeCursor()
方法来释放与数据库的连接,以便执行该语句

您是否尝试过使用
closeCursor()
?@frz3993谢谢!我不知道它的存在。将注释更改为答案,我会将其标记为已尝试使用
closeCursor()
?@frz3993谢谢!我不知道它的存在。将注释更改为答案,我会将其标记为答案