Я хочу, чтобы миграция создала клон существующей таблицы, просто суффиксом имени, включая все индексы из исходной таблицы.Как вы можете клонировать таблицу базы данных через миграцию Rails?
Итак, есть таблица «моментальных снимков», и я хочу создать «snapshots_temp» как точную копию таблицы (а не данные, только схему таблицы, но включая индексы).
Я мог бы просто скопировать и вставить блок из файла schema.rb и вручную переименовать его.
Но я не уверен, к моменту применения этой миграции, если определение из schema.rb будет по-прежнему точным. Другой разработчик, возможно, изменил таблицу, и я не хочу обновлять сценарий миграции.
Как я могу получить схему таблицы во время выполнения? По сути, как «rake schema: dump» реконструирует таблицу, чтобы я мог сделать то же самое в моей миграции? (но изменение имени таблицы).
Хороший звонок. «Используйте LIKE для создания пустой таблицы на основе определения другой таблицы, включая любые атрибуты столбца и индексы, определенные в исходной таблице» http://dev.mysql.com/doc/refman/5.1/en/create-table. html –
Работает с MySQL (и, возможно, с большинством баз данных), но если вы используете Sqlite, это не сработает. Я столкнулся с этой проблемой в среде разработки. Производство прекрасное (это MySQL). – MiniQuark
Удивительная благодарность. Обратите внимание, что ваша скопированная таблица получит индексы, но не внешние ключи. Вам придется воссоздать их отдельно. –