Это кажется довольно простым, но я не уверен, что происходит не так.
Я пытаюсь сделать следующее в моей миграции на Rails:
change_column :foo, :bar, :text, :limit => 16777215
Яполучение следующей ошибки
Mysql::Error: BLOB/TEXT column 'bar' can't have a default value: ALTER TABLE `foo` CHANGE `bar` `email_contents` text(16777215) DEFAULT '' NOT NULL
Единственное, что я могу понять, это проблема: то, что этот change_column возникает вскоре после того, как я добавил столбец в foo и мне пришлось изменить его с type: string на type: textна первом месте.Каждый из них имеет свои собственные сценарии миграции и выглядит так:
add_column :foo, :bar, :string, :null => false
и
change_column :foo, :bar, :text
В качестве эксперимента я попытался изменить первый столбец change_column (change_column: foo,: bar,: text) и обнаружил, что это успешно меняет таблицу.К сожалению, я не могу изменить ни одну из предыдущих миграций и могу только добавить новые в нашу текущую реализацию, чтобы она не работала в производстве.Вопрос в том, что позволяет мне изменить столбец один раз, но не дважды?
Обновление Попробовал первое предложение, но получил следующее:
Mysql::Error: BLOB/TEXT column 'bar' can't have a default value: ALTER TABLE `foo` CHANGE `bar` `bar` text(16777215) DEFAULT ''