我之前已经实现了 Room DB。后来我将其更新为 SQLITE,添加了一些列。现在我想为它编写迁移。这将是一次降级迁移,因为 Room 是 Sqlite 的包装类。任何帮助将不胜感激
要从 Room 迁移到 SQLite,就 SQLite 而言,您不需要执行任何操作,因为底层数据库是 SQLite 数据库。
但是,如果您进行了架构更改(添加了列),然后想要在 Room 中使用更改后的 SQLite 数据库,那么您将需要在相应的
@Entity
带注释的类(表)中反映这些更改。
应该注意的是,Room 比 SQLite 限制更多/灵活性更差,它可能不仅需要更改
@Entity
带注释的类,bay 可能需要转换以适应 Room 的限制性质。
作为 SQLite 中的示例,您可以将列设置为
thecolumn VARCHAR(50)
。 Room 只允许类型为 INTEGER、TEXT、REAL、BLOB 或 null。
在
@Entity
中,您可能会拥有 val theColumn: String?
(Kotlin)。
在上述场景中,您不能简单地使用 SQLite 数据库,您必须:
@Database
注解的类同名,但后缀为 _Impl
。在类中会有一个方法 createAllTables
每个组件的 SQL 与 Room 所期望的完全一样。您可能希望查看房间中的数据类型已更改,如何进行迁移?,这使用了第二种/后一种方法(即重命名原始表等)。