我有一个带有 Sugar ORM 的数据库,每次我创建一个扩展 SugarRecord 的新类时,我都需要将 android manifest 上的 database_version 升级为 Sugar ORM 识别新表。好的,直到那时。
问题是 Sugar ORM 正在删除我数据库每个表上的所有以前的数据!我有很多关于它们的数据,我无法在每次数据库升级时将其删除并重新插入。
有什么办法可以避免这种情况?
谢谢
在您的资产文件夹中创建一个名为 sugar_upgrades 的文件夹。
在该文件夹中创建一个名为<version>.sql
的文件,该文件对应于您在 Android Manifest 中升级到的数据库版本。例如。1.sql, 2.sql 该文件将包含该特定版本的所有更新/更改查询。
将 AndroidManifest.xml 中的 VERSION 元数据字段更改为适当的版本。
Sugar 负责将数据库从当前版本升级到升级版本。例如:如果数据库当前为版本 1,升级版本为 4,它将查找 2.sql、3.sql 和 4.sql 并按此顺序执行所有当前文件。
请注意,Sugar 会自动为新实体创建表,因此您的迁移脚本只需要满足对现有表的更改。
升级脚本示例。这是一个普通的 sql 脚本文件。您可以一次添加所有更改和插入/更新查询。每行以 ; 结尾 (分号)。
资产/sugar_upgrades 文件夹中的文件:2.sql
更改表注意添加名称文本;
你可以只使用sugar orm 1.5版本,比如
compile 'com.github.satyan:sugar:1.5'
然后只需更新清单中的数据库版本并确保您的数据没有被擦除