问题标签 [realm-migration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
401 浏览

android - 使用 Realm + Okhttp 时无法获取崩溃的确切原因

我正在使用 Realm,我的应用程序崩溃并出现以下痕迹,我不知道如何解决这个问题。这是我在控制台上看到的唯一堆栈跟踪。没有其他的 :

这是第 74 行:Realm realm = Realm.getInstance(context);

我不确定这次崩溃的确切原因是什么。非常感谢这方面的任何帮助。

0 投票
1 回答
3124 浏览

android - Realm 在第一次调用时崩溃。如果用于打开同一个文件,配置不能不同

我收到此错误:

这里:

在这一行:

我的配置是这样完成的:

我的问题是,如何关闭/关闭打开文件的配置,以便使用第二个配置(带有 deleteRealmIfMigrationNeeded 的配置?

0 投票
1 回答
493 浏览

android - 重用领域数据库的快照

我有一个每秒多次填充数据的领域数据库。我将数据库视为绘制的 MPChartLib 数据。我的目标是在特定时间点拍摄数据库的照片,并在稍后重用该信息。

我正在尝试几种方法,但都陷入了僵局。我的第一种方法是拥有第二个 Realm 数据库,我将在单击按钮时将第一个数据库中的信息填充到该数据库中。我的第二种方法是将数据库导出到一个文件,然后再重新打开它。

在我的第一种方法中,我在 onCreateView 中构建了两个数据库,如下所示。我将 mRealm 用作动态变化的 Realm,将 mSRealm 用作仅在按钮单击时发生变化的静态。

以及每个配置的 buildDatabase 代码

当 mRealm 数据库完成它的事务时,我测试以查看 recordData 标志是否已通过按钮推送设置为 true。如果是这样,那么我将数据库导出为文件和/或尝试将静态数据库快照更新为动态数据库的当前状态。

要将数据导出到我正在使用的文件中:

要复制到我正在使用的静态库:

此代码在创建 mSRealm 的新实例时终止,因为“开始填充等”永远不会显示在日志中。不知道我在那里做错了什么。

我想去一个新的片段并使用静态数据库。在新片段的 onCreateView 中,我尝试创建一个指向静态领域的配置:

但是,我无法对此进行测试,因为我的代码在我尝试的副本处停止。对于文件方法,我尝试通过已将其重写为片段并将其包含在我的项目中的 MigrationExampleActivity 进行工作,以测试如何通过版本更新执行迁移。这将变得更加重要,因为存档快照以供将来长期参考非常重要。

我认为这是从我在其他问题上阅读的文件中“重新加载”数据库的方法。我的代码在下面获取新实例时再次崩溃。

我试图在我的项目中模仿 realmjavamaster 的结构,但也许我在设置原始目录时遇到了问题。我不太清楚如何利用“常驻”领域以及如何参考重新打开它们、获得正确的路径等。

可能是我的问题在于引用,或者我在获取新实例时不知道足够的细节。也许我错过了一些基本的东西。

非常感谢任何帮助。

0 投票
0 回答
625 浏览

android - 我怎样才能确定领域是否存在

我想更改已经存在的领域数据库的领域配置。在我的应用程序中,我一直在使用:

在 Playstore 上发布应用程序后,我发现我可以使用自定义迁移来更改已经存在的数据库,如下所示:

但我无法更改已经存在的数据库的领域配置。如果我尝试使用新配置打开现有数据库,我会得到:

所以我现在要做的是-在具有迁移功能的设备上创建一个新数据库-检查是否有旧数据库-设备上是否有旧数据库将内容复制到新数据库并删除旧数据库

0 投票
1 回答
428 浏览

android - NullPointerException 无效 io.realm.RealmChangeListener.onChange()

我正在尝试在我的项目中实现 Realm 数据库,我有一个带有在数据库中添加项目的方法的类,我使用该类来存储这些方法并在我的片段中调用它们,但是当我这样做时,我得到一个错误:

我在这里做错了什么?

分段:

全球的:

0 投票
1 回答
505 浏览

ios - 领域:获取 -[__NSArrayM UTF8String]:无法识别的选择器发送到实例

我在应用程序升级场景中遇到崩溃。它给出以下错误和警告。但是这个问题只有在我安装了 AppStore 构建并且在此之上我安装了我的新 testflight 构建时才会发生。如果我在 AppStore 构建上安装开发人员构建,则它可以正常工作。

错误:

[__NSArrayM UTF8String]:发送到实例的无法识别的选择器

警告:一个 RLMRealm 实例在写事务期间被释放,所有挂起的更改都已回滚。确保在写事务期间保留对 RLMRealm 的引用。

当您点击应用程序图标时,它会立即崩溃,因此,我没有任何堆栈跟踪。

领域版本:0.96.3 & Xcode 版本:7.3

下面是我的迁移代码。

以上所有内容newObjects仅在此版本中添加。

更新 1:我可以看到deleteRealmIfMigrationNeededandroid。iOS中是否有任何等价物?我只发现deleteAllObjects。如果是这样,那么我可以简单地删除我的旧领域数据并保存新的。

谢谢。

0 投票
2 回答
470 浏览

ios - 迁移期间可选的 Int 属性包含 nil 而不是零

我正在尝试从以下模型执行 Realm.IO 迁移:

到以下:

如您所见,唯一的变化在于 contactId 的类型: optionalInt应转换为 optional String。我已经这样实现了:

但是,我发现在迁移后,我没有contactId(即nil值)的实体现在的contactId 等于“0”字符串。看来 oldObject!["contactId"] 返回 0 而不是 nil。

我没有找到关于如何执行这个简单任务的任何信息或示例,所以我不确定我是否正确检索/转换了值(RealmOptional<Int>也尝试转换为),所以我决定在提交问题之前在这里询问它github。这是一个错误还是预期的行为?如果是预期行为,如何正确获取价值?

PS:我的项目是开源的,因为我是 iOS 新手,并且为了自学而开发它,所以我将它推送到一个可以轻松重现问题的仓库(请注意它在migration_issue分支中)。我还使用现有文件进行了单元测试.realm,该文件在测试期间迁移到新模式。希望这会有所帮助。

PPS:我尝试了 0.102.1 和 0.103.1 版本的库。

PPPS:有人提到 Realm Browser 在我的示例 .realm 文件中不显示任何带有 nil 值的 contactId。我认为这只是 Realm Browser 问题,所以我在单独的分支中进行了另一个单元测试,以证明旧数据库具有nil 值。

0 投票
1 回答
833 浏览

swift - 领域迁移:将对象迁移到列表中

所以,我一直在尝试迁移我的 Realm 架构,但我似乎无法执行以下操作。

在 中oldSchema,我有以下内容:

在 中newSchema,我试图将工作日移动到工作日列表中。

在执行领域迁移时,我如何将weekday对象oldSchemaweekdays.newSchema

谢谢。

0 投票
1 回答
2809 浏览

java - 领域:更改字段名称以进行迁移

我想在 Realm DB 迁移过程中更改字段名称。似乎不支持更改字段名称,只有复制和删除是唯一的方法。

这个对吗?它消耗大量时间。

下面的代码是我尝试以复制和删除方式更改value字段summary

0 投票
2 回答
2155 浏览

ios - 执行从一个列表到另一个列表的领域迁移

在我的模型中,我想迁移List<Item>该 Item 包含自定义类产品的位置,例如:

简单地说List<Product>

我尝试了不同的东西,但似乎没有任何效果。例如这样的:

这会导致错误提示该对象已被持久化。

如果我在迁移块中创建一个新产品,我的领域中将有重复的对象。

我还尝试直接分配给列表,例如:newObject!["products"]不附加但也无法使其正常工作。

有人能指出我正确的方向吗?