我的本地主机(Win NT)上有sqlite数据库,想备份它。我想使用shell命令'.backup'来完成这个任务。但似乎我可以在备份过程中将新行插入数据库。
'.backup'hell命令是否在我的数据库上启动新的独占事务?
我想当我执行'.backup'hell命令时它会锁定我的数据库。
答案 0 :(得分:3)
sqlite3备份方法不会锁定数据库。如果您想锁定数据库,我建议使用以下解决方法:
INSERT
语句,数据库获得保留锁。但是,此INSERT
语句可以为空。ROLLBACK
或COMMIT
。<强>代码:强>
BEGIN;
INSERT INTO <anytable> SELECT * FROM <anytable> WHERE 1=0;
.backup <database> <file>
ROLLBACK;
如果你使用名为'backup'的表并且你为每个副本插入一行(date,..)(如果这些信息与你相关),那就不那么讨厌了。