我目前正在执行一项任务,向数据库中的列添加大量注释。我目前正在尝试使用change_column函数,如下面的代码;但是我遇到了一些错误,担心当我真正想让它们呆着时,可能会不小心更改某些类型。
change_column :tablename, :id, :bigint, comment: "id"
当所讨论的列是外键时,这将导致以下错误:
Mysql2 :: Error:无法更改列'id':在外键中使用 约束'fk_rails_(8个数字和字母的字符系列) 表'databasename.tablename'
我还尝试了以下方法,
change_column_comment :tablename, :id, comment:'ID'
它导致以下错误:
change_column_comment(:tablename,:id,{:comment =>“ ID”})
铁轨中止了! NotImplementedError: ActiveRecord :: ConnectionAdapters :: Mysql2Adapter不支持 更改列注释
答案 0 :(得分:1)
我也收到了相同的错误消息:
NotImplementedError: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
我的Rails版本:5.1.5
答案 1 :(得分:0)
我不明白你的意思,但是你为什么不使用add_column而不是change_column
add_column :tablename, :comment, :text, default: "ID"
答案 2 :(得分:0)
外键仍然是一个问题,但是我设法通过提取当前数据类型并在下面的语句结构中为每一列使用它们来获得合理的结果。
connection.execute("ALTER TABLE `tablename` MODIFY `id` bigint(20) comment 'ID'")