Это кажется довольно простым, но я не уверен, что идет не так.
Я пытаюсь сделать следующее при миграции на 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 ''