【发布时间】:2018-10-18 05:14:33
【问题描述】:
我目前正在处理将大量 cmets 添加到数据库中的列的任务。我目前正在尝试使用 change_column 函数,如下面的代码;但是我遇到了一些错误,并担心当我真的想不理会它们时可能会意外更改某些类型。
change_column :tablename, :id, :bigint, comment: "id"
当相关列是外键时,这会导致以下错误。:
Mysql2::Error: Cannot change column 'id': used in a foreign key 约束'fk_rails_(8个字符的数字和字母序列)'的 表'数据库名.tablename'
我也尝试了以下方法,
change_column_comment :tablename, :id, comment:'ID'
它会导致以下错误:
change_column_comment(:tablename, :id, {:comment=>"ID"})
rails 中止!未实现错误: ActiveRecord::ConnectionAdapters::Mysql2Adapter 不支持 更改列 cmets
【问题讨论】:
-
使用 Rails 5.1.4
-
总是有
connection.execute('SQL to add the comment goes here')。 -
啊,这可能是一个我没有想到的很好的解决方案。用更多的 rails-y 东西来做会很好,但我现在就试一试。
-
connection.execute("ALTER TABLE 'table_name' CHANGE 'id' 'id' BIGINT(20) COMMENT 'ID' ")给出了与 change_column 函数相同的错误。我认为 mysql2 可能是这里的限制因素,除非 rails 有一个聪明的解决方案。 -
一点谷歌搜索表明限制在 MySQL 本身。我认为您可能必须删除所有 FK,添加注释(这可能非常昂贵),然后将 FK 放回原处。
标签: mysql ruby-on-rails migration ruby-on-rails-5 mysql2