PDO Sqlite错误5:数据库锁定

问题描述:

我一直在尝试使用一个SQLite数据库(与PDO的PHP),但一直在遇到问题。一般来说,命令工作,一切都很好(包括存储的文件),但由于某些原因,当我运行这两个命令(已被简化的),我得到的错误PDO Sqlite错误5:数据库锁定

SQLSTATE[HY000]: General error: 5 database is locked

我已经尝试了一段时间,但一直无法解决任何错误。代码如下。

我做的事:
   试过发现,无论是评论的命令出来的会导致错误没有发生命令
   之间把睡眠(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; 
    } 

} 

很抱歉,如果有一个简单的修复代码,我在此很新。任何帮助将不胜感激。

+1

您是否尝试过使用'closeCursor()'? – frz3993

+0

@ frz3993谢谢!不知道存在。将评论更改为答案,我会将其标记为这样 –

您可以在PDOStatement对象上使用closeCursor()方法来释放与数据库的连接,以便执行该语句。 You can refer to the PHP manual.