0
我一直在嘗試使用一個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;
}
}
很抱歉,如果有一個簡單的修復代碼,我在此很新。任何幫助將不勝感激。
您是否嘗試過使用'closeCursor()'? – frz3993
@ frz3993謝謝!不知道存在。將評論更改爲答案,我會將其標記爲這樣 –