Несогласованная генерация схемы базы данных Rails для логических полей - PullRequest
2 голосов
/ 10 января 2011

Rails версия = 2.3.8

При сравнении схем двух моих сайтов, каждый с почти идентичной кодовой базой, я заметил кое-что очень странное. Для точно такой же таблицы схема одного сайта показывает:

t.integer  "member_feed",   :limit => 1, :default => 1

и для других:

t.boolean  "member_feed",   :default => true

Не было никакой разницы в том, как они были созданы. Фактически, первый был фактически извлечен из второго, когда сайт был создан. В этой первой схеме было как минимум 40 различных случаев, когда логическое значение отображалось неправильно, и мне приходилось входить и менять каждый из них с помощью change_column миграции. Обратите внимание, что функциональность определенно отличается, если логическое значение не определено явно.

У кого-нибудь есть идеи относительно того, что может быть причиной этого? Спасибо.

1 Ответ

2 голосов
/ 22 марта 2011

Это происходит при запуске миграций из разных операционных систем.Это не mysql рельсов, который виноват, но фактический mysql.

Некоторые версии этого просто не хранят факт, что есть ограничения и другие флаги ... обычно те, которые на самом делеиметь встроенный логический класс, что устраняет необходимость в пределе => 1 (вы также обнаружите, что некоторые версии «точности» также не сохраняются для десятичных значений)

Проблема возникает из-за того, чтоmysql предполагает, что все другие версии имеют встроенный класс ... и, конечно, они не имеют.

Это ошибка интегрированных систем, которая действительно не может быть исправлена.Сожалею.(

...