我一直收到「資料庫已鎖定」的錯誤,直到我發現 sqlite3 的某些功能必須使用 SQL 特殊指令 (即使用 PRAGMA 關鍵字) 設定。例如,顯然解決我的「資料庫已鎖定」問題的方法是將 journal_mode 設定為 'wal' (它預設為 'delete',如這裡所述:https://www.sqlite.org/wal.html (請參閱啟用和設定 WAL 模式))。
所以基本上我必須做的是建立一個與資料庫的連線,並使用 SQL 陳述式設定 journal_mode。範例
<?php
$db = new SQLite3('/my/sqlite/file.sqlite3');
$db->busyTimeout(5000);
// WAL 模式對並行性有更好的控制。
// 來源:https://www.sqlite.org/wal.html
$db->exec('PRAGMA journal_mode = wal;');
?>
希望這有幫助。