2012-09-04 89 views
1

我想在Linux/Apache服務器上使用PHP & sqlite實現一個簡單的數據庫。使用PDO寫入SQLite數據庫

我可以很容易地閱讀,但我不能執行任何UPDATE,DELETE或INSERT操作。致命錯誤我得到的是:

General error: 5 database is locked 

舉個簡單的例子:

$pdo=new PDO('sqlite:test.sqlite'); 
$pdo->exec("INSERT INTO menus(id,name,description) VALUES(6,'test','this is a test')"); 

這也是在等待很長一段時間(約一分鐘),然後報告上述錯誤。

我已經閱讀了很多建議,其中許多建議數據庫或其包含的文件夾應該是可寫的。他們是。 (或者是,我讓它們成爲世界上可寫的測試用例,並且在失敗時使它們恢復更合理的權限。)

我沒有任何困難使用其他技術寫入數據庫,例如Linux中的sqlite3命令和SQLite管理器插件Firefox瀏覽器。

我會歡迎任何有關如何使這項工作的意見。

+0

爲了澄清,您可以使用另一個程序向此數據庫寫入數據,而PDO將其報告爲鎖定? – Brad

+0

沒錯。我已經檢查過沒有其他進程正在打開數據庫。馬克 – Manngo

+0

user1413856,這是離奇的!進入這種領域 - 並不是每天都會發生,您使用的是什麼版本的PHP?您使用的PDO驅動程序的版本(如果有)?如果你建立一個新的乾淨的數據庫(沒有數據,單個表)並且嘗試會發生什麼? – Brad

回答

1

請嘗試給數據庫文件一個777權限,然後重試。我懷疑它與權限有關,因爲你可以使用sqlite3程序修改數據庫。

如果失敗,請嘗試查看此question的答案。

+1

試過了,權限爲660(不需要賦予執行權限)。我也試過對包含的目錄777權限。我已經看過另一個參考文獻,但fuser和lsof顯示沒有其他用戶打開數據庫。 - 馬克 – Manngo