我目前正在处理一项任务,向数据库中的列添加大量注释。我目前正在尝试使用类似于以下代码的change_column函数;但是我遇到了一些错误,并担心当我实际上想不理会它们时,我可能会意外更改某些类型。
change_column :tablename, :id, :bigint, comment: "id"
当有问题的列是外键时,这会导致以下错误。
Mysql2::错误:无法更改列"id":在外键中使用 约束 "fk_rails_(8 个字符的数字和字母系列(" 表 '数据库名称.表名称'
我还尝试了以下方法,
change_column_comment :tablename, :id, comment:'ID'
它会导致以下错误:
change_column_comment(:tablename, :id, {:comment=>"ID"}(
轨道中止!未实现错误: ActiveRecord::ConnectionAdapters::Mysql2Adapter 不支持 更改列注释
我也收到了相同的错误消息:
NotImplementError: ActiveRecord::ConnectionAdapters::Mysql2Adapter 不支持更改列注释
当它发生时,您可以更改:
从:
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
我的轨道版本:5.1.5
我不明白你的意思,但你为什么不使用add_column而不是change_column
add_column :tablename, :comment, :text, default: "ID"
外键仍然是一个问题,但我通过提取当前数据类型并在每列的以下语句结构中使用它们来设法获得合理的结果。
connection.execute("ALTER TABLE `tablename` MODIFY `id` bigint(20) comment 'ID'")