Android Room 使用 Migration 更改列的类型

A.D*_*ibo 3 android android-room

我没有找到我正在寻找的任何答案,所以我发送了这个问题。

我正在使用 Android 版 Room。

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

有人知道怎么做吗?

我的问题可能很愚蠢,但我没有在 stackoverflow/任何谷歌搜索上找到任何答案。

Seb*_*n M 9

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

在这里你有很好的文章:https : //medium.com/androiddevelopers/understanding-migrations-with-room-f01e04b07929


kar*_*ran 5

正如此处的 sqlite 文档中所述,sqlite 不支持更新列类型。

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

正如Sebastian M所指出的,您将需要创建新表并添加新列,将数据从旧表复制到新表。扔掉旧桌子。将新表重命名为旧表的名称。