首页 > 解决方案 > Android Realm - 无法在路径打开领域:read_only 文件系统

问题描述

我们在我们的应用程序中使用 Realm 数据库已经有一段时间了,但最近我们注意到一些来自我们的一些用户的奇怪日志,关于 Realm 无法打开实例,因为缺少对 realm.lock 的权限

这个问题出现得很随机,这意味着问题是在我们代码中的许多不同位置触发的,但根本不是系统性的。即使在实例之前成功打开(和关闭)几次之后也会发生这种情况。我们无法重现它。它发生在 Android 7.0 上的 Samsung SMT-580 上。在我们的应用程序中,我们使用的是 Realm 4.2.0

正如我所说,当我们尝试打开 Realm 实例时会发生这种情况,例如:


    Realm realmInstance = Realm.getDefaultInstance();
    try {
         RealmResults<Object> results = realmInstance.where(...).findAll();
               ...
    }
    finally {
         realmInstance.close();
    }

我们收到的错误是这个:

“无法在路径'/data/data/com.xxx/files/default.realm.lock'打开领域。请使用您的应用具有读写权限的路径。(open(“/data/data/com .xxx/files/default.realm.lock") 失败:只读文件系统) (/data/data/com.xxx/files/default.realm.lock) 在 /home/cc/repo/realm/release/领域/领域库/src/main/cpp/io_realm_internal_OsSharedRealm.cpp 第 101 行"

我们不知道为什么会发生这种情况,以及为什么最近似乎出现了这个问题(我们没有对这部分进行任何更改)

我们在 Realm Github 上发现了这个问题: https ://github.com/realm/realm-java/issues/5715 但不确定这是否真的相关

标签: androiddatabaseexceptionpermissionsrealm

解决方案


推荐阅读