我正在尝试将列的数据类型从字符串更改为ID。但是SQlite3让我很难受。这是我迁移中的唯一一行:
change_column :containers, :title, :text
运行迁移时,出现数据类型不匹配的错误:
SQLite3::MismatchException: datatype mismatch: INSERT INTO "acontainers"
我很确定这是因为ActiveRecord创建了一个临时表,该表的id字段的数据类型为INT,而原始表实际上的数据类型为VARCHAR,如下所示:
CREATE TEMPORARY TABLE "acontainers" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
问题是我不知道该如何解决。任何输入,我们将不胜感激!
答案 0 :(得分:1)
看起来像SQLite包装器中的错误。 如果您不使用该版本,则可以尝试将其更新为最新版本。
作为解决方法,您可以分多个步骤进行迁移:
这也是一种更安全的方法,因为change_column
可能会导致停机和错误
您可以在this gem description