6

我在应用程序的第一个版本中使用了 SugarORM。现在,我正在开发第二个版本,其中将新表添加到数据库中。

根据 SugarORM文档, “Sugar 会自动为新实体创建表,因此您的迁移脚本只需要满足对现有表的更改。”

这是我所做的:

  1. 增加了 AndroidManifest 中的 DB 版本<meta-data android:name="VERSION" android:value="2" />
  2. 创建了新的记录类。public class NewModel extends SugarRecord<NewModel>

运行应用程序时,Sugar 创建了新表,但不幸的是,它还删除/创建了现有表,擦除了本地保存的所有数据!

我还尝试自己创建新表,方法是添加一个2.sql包含我的CREATE TABLE NEW_MODEL语句的迁移脚本文件。不幸的是,它抛出了一个异常“表已经存在”,因为 Sugar 创建了新表,然后尝试运行我的脚本!

有什么建议么?

4

1 回答 1

12

我找到了一个解决方案,我必须使用新版本号创建一个空的迁移脚本文件!现在,它创建新表而不删除/创建我的旧表。

所以,总结一下:

  1. 增加 AndroidManifest 中的 DB 版本号。
  2. 创建新的 Sugar 记录类。
  3. 添加一个以新数据库版本命名的空迁移脚本文件,放在 assets/sugar_upgrades 下。(例如 2.sql)。
于 2015-08-18T14:50:17.167 回答