Ошибка миграции Rails

Это кажется довольно простым, но я не уверен, что идет не так.

Я пытаюсь сделать следующее при миграции на 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 ''
6
задан keybored 9 May 2011 в 20:15
поделиться