2016-12-26 126 views
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; 
    } 

} 

很抱歉,如果有一個簡單的修復代碼,我在此很新。任何幫助將不勝感激。

+1

您是否嘗試過使用'closeCursor()'? – frz3993

+0

@ frz3993謝謝!不知道存在。將評論更改爲答案,我會將其標記爲這樣 –

回答