android– 备份室数据库

android– 备份室数据库,第1张

概述我正在尝试以编程方式备份​​房间数据库.为此,我只是复制包含整个数据库的.sqlite文件但是,在复制之前,由于房间已启用写入日志记录,我们必须关闭数据库,以便-shm文件和-wal文件合并为单个.sqlite文件.Aspointedouthere我在RoomDatabase对象上运行.close():一切正常,备份,

我正在尝试以编程方式备份​​房间数据库.

为此,我只是复制包含整个数据库的.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 – 备份室数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1104715.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存