Gab*_*ber 6 c c++ database sqlite locking
我在一些系统上有一个sqlite3数据库,我需要在正在进行的操作中下载.停止或暂停访问进程不是一种选择.因此,据我所知,我需要在下载期间将数据库中的SHARED锁(如http://www.sqlite.org/lockingv3.html中所述)保存到数据库,以避免数据库更改和下载过程中的损坏.我如何明确获得这样的锁定?下载是从C++程序控制的,所以我需要锁定它.
编辑:thkala建议进行数据库转储.但我更愿意找到一个带锁定的解决方案,因为我不确定是否有足够的内存可用于db的完整副本.
不,不.不,不!
搞乱锁和手工复制文件是做旧事情的老方法.SQLite现在有一个适当的备份API,你可以使用.这是执行SQLite数据库的在线副本的推荐方法 - 您可以使用它来创建数据库的副本,然后可以在方便时下载.
编辑:
如果你绝对必须使用锁定,你可以使用这里概述的方法- 可能在翻译成C之后:
打开数据库
使用该BEGIN IMMEDIATE语句获取共享锁.
手动复制/下载文件 - 确保您不会错过任何文件.至少有DB文件,日志文件和可能的WAL文件.您可能希望将DB放在单独的目录中以简化操作.
ROLLBACK 你刚刚开始的交易.
我理解这种方法在某些情况下如何有用,但我必须重申,这不再是推荐的方法.
| 归档时间: |
|
| 查看次数: |
635 次 |
| 最近记录: |