0
我正在使用調用sqlite3 shell來更新數據庫中的值的單行腳本(這是在Windows 8.1上,雖然在這裏應該沒有關係)。如何等待sqlite3解鎖數據庫?
腳本只是讀取:
sqlite3 < update.sql
的update.sql文件包含:
.open "mydb.db"
UPDATE <args omitted for brevity>;
.save "mydb.db"
.exit
即它打開DB(根據sqlite3的,幫助這意味着:它讀取到內存)應用更新,然後想要將修改的DB再次保存回磁盤。
但是,當我執行該腳本,我得到:
C:\>sqlite3 0<update.sql
.open "mydb.db"
UPDATE <args omitted for brevity>;
.save "mydb.db"
**Error: database is locked**
.exit
的原因 - 因爲我發現通過谷歌搜索左右 - 似乎是,更新是在後臺線程,這使數據庫鎖定運行。這意味着,當save-command嘗試將數據庫寫回到磁盤時,數據庫仍處於鎖定狀態。
我發現沒有命令在sqlite3-shell釋放該鎖(或等到該鎖被釋放)。那麼,我可以做些什麼來釋放這個鎖(或等到它被釋放),從而讓這個腳本正常工作?
缺少這樣的命令,因此無法在應用一些修改後保存數據庫似乎使sqlite3 shell完全無用。我一定在這裏錯過了一些基本的東西!?!