代码之家  ›  专栏  ›  技术社区  ›  Abdurrahman

Sugar ORM迁移:创建新表删除/重新创建现有表

  •  6
  • Abdurrahman  · 技术社区  · 11 年前

    我在应用程序的第一个版本中使用了SugarORM。 现在,我正在开发第二个版本,它在DB中添加了新的表。

    根据SugarORM documentation 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 陈述不幸的是,它也抛出了一个异常“Table already exists”,因为Sugar创建了新表,然后尝试运行我的脚本!

    有什么建议吗?

    1 回复  |  直到 11 年前
        1
  •  12
  •   Abdurrahman    11 年前

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

    因此,总结如下:

    1. 增加AndroidManifest中的DB版本号。
    2. 创建新的Sugar记录类。
    3. 添加一个以新DB版本命名的空迁移脚本文件,放在assets/sugar_upgrades下。(例如2.sql)。