Android Room带有迁移的列更改类型

时间:2018-12-07 11:08:11

标签: android android-room

我没有找到要搜索的答案,所以我正在发送此问题。

我正在使用Room for Android。

我有一个带有Int列的Entity,我需要将其更改为Double,但我不知道该怎么做。

有人知道怎么做吗?

我的问题可能很愚蠢,但在stackoverflow /任何Google搜索中都找不到任何答案。

2 个答案:

答案 0 :(得分:0)

您需要使用新架构创建新表。 将数据从旧表复制到新表。 放下旧桌子。 将新表重命名为旧表的名称。

您在这里有关于此的好文章: https://medium.com/androiddevelopers/understanding-migrations-with-room-f01e04b07929

答案 1 :(得分:0)

如在here上有关sqlite的文档中所述,sqlite不支持更新列类型。

  

SQLite支持ALTER TABLE的有限子集。更改表   SQLite中的命令允许用户重命名表或添加新表   现有表的列。无法重命名列,   删除列,或在表中添加或删除约束。

正如 Sebastian M 所指出的,您将需要创建一个添加了新列的新表,即将数据从旧表复制到新表。放下旧桌子。将新表重命名为旧表的名称。