Rails Migration: добавление комментария к столбцу без изменения типа
В настоящее время я работаю над задачей добавления большого количества комментариев к столбцам в базе данных. В настоящее время я подхожу к нему, пытаясь использовать функцию change_column, как показано ниже; однако я сталкиваюсь с некоторыми ошибками и беспокоюсь, что могу случайно изменить некоторые типы, когда я на самом деле хочу оставить их в покое.
change_column :tablename, :id, :bigint, comment: "id"
Это приводит к следующей ошибке, когда рассматриваемый столбец является внешним ключом.
Mysql2:: Ошибка: невозможно изменить столбец "id": используется в ограничении внешнего ключа "fk_rails_(8-значный ряд цифр и букв)" таблицы "databasename.tablename"
Я также попробовал следующий подход,
change_column_comment :tablename, :id, comment:'ID'
это приводит к следующей ошибке:
change_column_comment (: tablename,: id, {: comment => "ID"})
рельсы прерваны! NotImplementedError: ActiveRecord::ConnectionAdapters::Mysql2Adapter не поддерживает изменение комментариев столбца
2 ответа
Внешние ключи все еще являются проблемой, но мне удалось получить разумный результат, извлекая текущие типы данных и используя их в следующей структуре операторов для каждого столбца.
connection.execute("ALTER TABLE `tablename` MODIFY `id` bigint(20) comment 'ID'")
У меня тоже такое же сообщение об ошибке:
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
Я не понимаю вас, но почему вы не использовали add_column вместо change_column
add_column :tablename, :comment, :text, default: "ID"