Миграция Ruby on Rails, изменить таблицу на MyISAM - PullRequest
4 голосов
/ 13 октября 2010

Как правильно создать миграцию Rails, чтобы в MySQL таблица менялась на MyISAM?Это в настоящее время InnoDB.Выполнение необработанного оператора execute изменит таблицу, но не обновит db / schema.rb, поэтому, когда таблица воссоздается в тестовой среде, она возвращается к InnoDB и мой полнотекстовый поиск завершается неудачей.

Как мне изменить / добавить миграцию, чтобы существующая таблица была изменена на MyISAM, а schema.rb был обновлен, чтобы мои базы данных и соответствующие тестовые базы данных были обновлены соответственно?

Ответы [ 2 ]

5 голосов
/ 28 октября 2010

Я не нашел отличный способ сделать это.Вы можете изменить свой schema.rb, как кто-то предложил, и затем запустить: rake db:schema:load, однако это перезапишет ваши данные.

То, как я это сделал (если вы пытаетесь преобразовать таблицу с именем books):

  1. Сохраните существующие данные из интерфейса командной строки: CREATE TABLE tmp SELECT * FROM books;

  2. В новом файле миграции удалите таблицу книг и заново создайте ее с помощью:options => "ENGINE=MyISAM" как кто-то сказал в комментарии

  3. Скопируйте содержимое обратно: INSERT INTO books SELECT * FROM tmp

3 голосов
/ 14 октября 2010

i думаю , что если вы измените формат схемы (config.active_record.schema_format) с: ruby ​​на: sql, все sql будут сохранены там.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...