Rails 迁移:在不更改类型的情况下向列添加注释
Rails Migration: Adding comment to column without changing type
我目前正在执行一项任务,向数据库中的列添加大量评论。我目前正在尝试像下面的代码一样使用 change_column 函数;但是我 运行 遇到了一些错误,并且担心我可能会在我实际上不想管它们的时候不小心更改了某些类型。
change_column :tablename, :id, :bigint, comment: "id"
当有问题的列是外键时,这会导致以下错误。:
Mysql2::Error: Cannot change column 'id': used in a foreign key
constraint 'fk_rails_(8 character series of numbers and letters)' of
table 'databasename.tablename'
我也试过下面的方法,
change_column_comment :tablename, :id, comment:'ID'
它导致以下错误:
change_column_comment(:tablename, :id, {:comment=>"ID"})
rails aborted! NotImplementedError:
ActiveRecord::ConnectionAdapters::Mysql2Adapter does not support
changing column comments
我没听懂,但你为什么不使用 add_column instead of change_column
add_column :tablename, :comment, :text, default: "ID"
外键仍然是个问题,但我通过提取当前数据类型并在以下语句结构中为每一列使用它们,设法获得了合理的结果。
connection.execute("ALTER TABLE `tablename` MODIFY `id` bigint(20) comment 'ID'")
我也收到了同样的错误信息:
NotImplementedError: ActiveRecord::ConnectionAdapters::Mysql2Adapter does not support changing column comments
发生时,您可以更改:
发件人:
def change
change_column :tablename, :id, :bigint, comment: "id"
收件人:
def up
change_column :tablename, :id, :bigint, comment: "id"
end
def down
change_column :tablename, :id, :bigint, comment: ""
end
我的Rails版本:5.1.5
我目前正在执行一项任务,向数据库中的列添加大量评论。我目前正在尝试像下面的代码一样使用 change_column 函数;但是我 运行 遇到了一些错误,并且担心我可能会在我实际上不想管它们的时候不小心更改了某些类型。
change_column :tablename, :id, :bigint, comment: "id"
当有问题的列是外键时,这会导致以下错误。:
Mysql2::Error: Cannot change column 'id': used in a foreign key constraint 'fk_rails_(8 character series of numbers and letters)' of table 'databasename.tablename'
我也试过下面的方法,
change_column_comment :tablename, :id, comment:'ID'
它导致以下错误:
change_column_comment(:tablename, :id, {:comment=>"ID"})
rails aborted! NotImplementedError: ActiveRecord::ConnectionAdapters::Mysql2Adapter does not support changing column comments
我没听懂,但你为什么不使用 add_column instead of change_column
add_column :tablename, :comment, :text, default: "ID"
外键仍然是个问题,但我通过提取当前数据类型并在以下语句结构中为每一列使用它们,设法获得了合理的结果。
connection.execute("ALTER TABLE `tablename` MODIFY `id` bigint(20) comment 'ID'")
我也收到了同样的错误信息:
NotImplementedError: ActiveRecord::ConnectionAdapters::Mysql2Adapter does not support changing column comments
发生时,您可以更改:
发件人:
def change
change_column :tablename, :id, :bigint, comment: "id"
收件人:
def up
change_column :tablename, :id, :bigint, comment: "id"
end
def down
change_column :tablename, :id, :bigint, comment: ""
end
我的Rails版本:5.1.5