我正在尝试更改表列的数据类型。我尝试了两种不同的方法:
def change
remove_column :users, :permission_level
add_column :users, :permission_level, :integer
end
和
def change
change_column :users, :permission_level, :integer
end
但是,在这两种情况下,我都收到了这个错误:
SQLite3::ConstraintException: FOREIGN KEY constraint failed: DROP TABLE "users"
/home/prios/blog/db/migrate/20170719071633_change_column_permission_level_from_string_to_integer.rb:3:in `change'
ActiveRecord::InvalidForeignKey: SQLite3::ConstraintException: FOREIGN KEY constraint failed: DROP TABLE "users"
/home/prios/blog/db/migrate/20170719071633_change_column_permission_level_from_string_to_integer.rb:3:in `change'
SQLite3::ConstraintException: FOREIGN KEY constraint failed
/home/prios/blog/db/migrate/20170719071633_change_column_permission_level_from_string_to_integer.rb:3:in `change'
Tasks: TOP => db:migrate
似乎 Rails 试图删除表而不是删除/更改其中一列的数据类型,这是我不想要的。
更多信息:我尝试更改/删除的列没有与之关联的任何外键。这是一个我还没用过的专栏。