【问题标题】:sqlite3 shell command '.backup' and transactionsqlite3 shell 命令 '.backup' 和事务
【发布时间】:2012-06-09 09:07:45
【问题描述】:

我的本​​地主机 (Win NT) 上有 sqlite 数据库并且想要备份它。我想使用 shell 命令 '.backup' 来完成这个任务。但似乎我可以在备份过程中将新行插入数据库。

'.backup' shell 命令是否会在我的数据库上启动新的独占事务?

我认为当我执行 '.backup' shell 命令时它会锁定我的数据库。

【问题讨论】:

    标签: shell sqlite backup database-backups


    【解决方案1】:

    sqlite3 备份方式不锁定数据库。如果您想锁定数据库,我建议使用以下解决方法:

    • 启动事务(共享锁)
    • 通过使用任何INSERT 语句,数据库将获得保留锁。但是,此 INSERT 语句可以为空。
    • 备份数据库。
    • 使用ROLLBACKCOMMIT 结束事务。

    代码:

    BEGIN;
    INSERT INTO <anytable> SELECT * FROM <anytable> WHERE 1=0;
    .backup <database> <file>
    ROLLBACK;
    

    如果您使用名为“备份”的表,并且为每个副本插入一行(日期,..)(如果此信息与您相关),那么一种不那么老套的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多