【问题标题】:Repeated calls to Room Persistence Library truncates local file table重复调用 Room Persistence Library 会截断本地文件表
【发布时间】:2019-09-23 04:12:04
【问题描述】:

我有一个带有本地 sqlite 数据库的 android 应用程序,我使用 Room Persistence Library 访问它。

我可以使用这个来访问文件:

cAssetsDatabase cassetsDatabase  = Room.databaseBuilder(context, cAssetsDatabase.class, "localDB.sqlite").fallbackToDestructiveMigration().build();


cAssets cassets = cassetsDatabase.daoAccesscAssetsDB().fetchAssetByTagID(TagID);

一切正常,不幸的是,离开这个活动并返回后,尝试访问数据库返回 null。

当我在访问后将数据库从设备中拉出时,我使用 select 的表似乎已被截断。

【问题讨论】:

    标签: android sqlite android-room


    【解决方案1】:

    您可能会注意到另外两个文件与数据库文件同名,但一个以 -wal 为后缀,另一个以 -shm 为后缀。复制所有三个文件。

    这是因为WAL(预写日志记录)(可能正在使用)将更改写入 WAL 文件而不是数据库文件,并且仅在数据库被检查点时才将它们应用于数据库文件,否则从 -wal 文件访问更改(-shm 是共享内存文件,是 -wal 文件的日志文件)。

    【讨论】:

    • 我看到 -wal 文件与我的数据库在同一目录中创建。我不确定您所说的“复制所有三个文件”是什么意思?
    猜你喜欢
    • 2018-03-28
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多