
我正在尝试以编程方式备份房间数据库.
为此,我只是复制包含整个数据库的.sqlite文件
但是,在复制之前,由于房间已启用写入日志记录,我们必须关闭数据库,以便-shm文件和-wal文件合并为单个.sqlite文件. As pointed out here
我在RoomDatabase对象上运行.close():
一切正常,备份,但是,稍后,当我尝试执行INSERT查询时,我收到此错误:
androID.database.sqlite.sqliteException: no such table: room_table_modification_log (code 1)关闭后如何才能正确地重新打开房间数据库?
PS:RoomDatabase对象上的.isopen()在INSERT之前返回true
房间版:1.1.1-rc1
解决方法:
How can I properly re-open room db after I close it?
@H_404_28@对不起,我对这个问题没有答案.
但是,您不必关闭数据库以将所有内容移动到原始数据库文件.您可以使用wal_checkpoint pragma强制检查点.
根据数据库查询以下语句.
@query("pragma wal_checkpoint(full)")voID checkpoint ();This链接可能会对这个问题有所了解.
总结以上是内存溢出为你收集整理的android – 备份室数据库全部内容,希望文章能够帮你解决android – 备份室数据库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)