Проблема в том, что я не могу изменить тип столбца «Текст»DataMapper миграции колонки на новый тип данных
Это ошибка, что я вижу:
DarkBook: площадка Justin $ рейка migrate_up (in/Users/Justin/Dropbox/Business/datamapper/playground) ~ Запуск миграции == Выполнение миграции # 1: create_person_table CREATE TABLE people
(id
SERIAL PRIMARY KEY, name
VARCHAR (2), age
INTEGER) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci -> 0.0112s -> 0.0129s == Выполнение миграции # 2: change_name_constraints rak e прервано! Неинициализированная константа SQL :: TableModifier :: Text /Users/Justin/Dropbox/Business/datamapper/playground/rakefile.rb:61: в блоке (3 уровня) в '(см. полный след, выполнив задачу с помощью --trace) Графический скрипт, который я использую для тестирования DataMapper: https://gist.github.com/818143 Это кажется, как будто метод change_column в классе TableModifier не преобразовывает оператор изменения столбца в MySQL правильно. Другие, казалось бы, связанные ошибки: если я попытаюсь преобразовать столбец в строку большей длины, я получаю следующее: DarkBook: игровая площадка Justin $ rake migrate_up (in/Users/Justin/Dropbox/Business/datamapper/playground) ~ Начальная миграция = = Выполнение Up миграции # 2: change_name_constraints
ALTER TABLE people
ALTER COLUMN name
ТИП Строка
~ у вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «TYPE String» в строке 1 (код: 1064, sql state: 42000, query: ALTER TABLE people
ALTER COLUMN name
TYPE String, uri: mysql://root:@127.0.0.1datamapper_test) rake aborted! У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MySQL, для правильного синтаксиса для использования рядом с «TYPE String» по строке 1
/Users/Justin/Dropbox/Business/datamapper/playground/rakefile.rb:60:in `block (2 уровня) в '(полный след, выполнив задачу с --trace)
Согласно тому, что я читал о MySQL, „ALTER TABLE people
ALTER COLUMN name
строкового типа“ не является допустимой команда запроса MySQL. ТИП не должен быть там, и строка должна быть преобразована в VARCHAR.
Внутри метода change_column я вижу, что это просто прямой проход того типа, который я предоставляю. Это заставляет меня думать, что, возможно, я не должен напрямую обращаться к методу change_column?
Как только я выясню это, и я нахожусь в пути, я документирую этот материал, поскольку выясняя, что миграция DataMapper api была адской.