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完全无用。我一定在这里错过了一些基本的东西!?!