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