Rails rename_column проблема миграции - PullRequest
1 голос
/ 09 июня 2009

Я пытаюсь запустить миграцию в существующей базе данных, чтобы изменить имя столбца в таблице. Когда я запускаю миграцию, я получаю сообщение о том, что поля Blob / Text не могут иметь значения по умолчанию. Столбец, о котором идет речь, - это текстовый столбец с ненулевым атрибутом, но без значения по умолчанию.

Миграция, которую пытается выполнить Rails:

ALTER TABLE xxxxx CHANGE abcd ABCD text ПО УМОЛЧАНИЮ '' НЕ NULL

Теперь я не просил миграцию изменить тип столбца, я только попросил его переименовать столбец, так почему миграция пытается что-то сделать с типом столбца?

У меня проблема с Google, и я не нашел объяснения или обходного пути.

Любая помощь приветствуется.

Викрам

1 Ответ

0 голосов
/ 09 июня 2009

Кажется, существует давняя неразрешенная заявка на эту проблему, как описано здесь:

отчет об ошибках рельсов

По умолчанию в Rails создаются столбцы, которые имеют значение NULL, поскольку это предотвращает ложные срабатывания при проверке присутствия и т. Д. При переводе пустых строк обратно в Ruby. Есть ли шанс, что вы можете обойти это, переопределив текстовый столбец для работы со значениями NULL в консоли mySQL?

EDIT

Вы можете сделать это в своем файле миграции, это не так, как в Rails, но это намного приятнее, чем отправка всем по электронной почте сообщений об изменении их локальных копий:

MyModel.connection.execute "ALTER TABLE xxxxx CHANGE abcd ABCD text DEFAULT NULL"
...