ahmad_buglen
@ahmad_buglen
Начинающий веб разработчик

Потерял миграции, как лучше поправить сервер и развернуть проект на рабочем компе?

Собственно продакшн сервер работает, деплой происходит через капистрано, когда вышли ошибки с миграциями вынуждены были прямо на сервере добавлять и удалять миграции(которые были потеряны при неправильном использовании СКВ(git)) и отследить что и где потеряно не представляется возможным.
Возникла идея, переписать все миграции, удалить старые, запустить новые(чтобы файл схемы был актуальным и можно было на других компах запустить проект для разработчиков) и использовать дамп рабочей базы с данными(на продакшн сервере).
Переписал миграции, накатил, поменял базу, в дампе старой базы в таблицу schema_migrations добавил версию из схемы. Не запускается пишет:
ActiveRecord::PendingMigrationError
Migrations are pending. To resolve this issue, run: bin/rake db:migrate RAILS_ENV=development
при запуске команды происходит ошибка так как таблицы уже существуют.
ruby 2.2.0
rails 4.2.0
mysql2 0.3.18
Bundler version 1.13.6
rake >= 10.0.0

Собственно вопрос в том как мне подружить старую базу с приложением(на рабочих компах и стоит ли на сервере править миграции). В дальнейшем получается что нужно еще навести порядок внутри базы, для этого думал внутри mysql(на продакшн сервере) удалить вручную неиспользуемые таблицы и индексы, добавить не хватающие индексы(в новых миграциях неиспользуемые таблицы не описаны, но описаны несуществующие индексы). Конечно понимаю что скорее всего много ошибок наделал, но в дальнейшем постараюсь вести базу должным образом, спасибо за внимание.
  • Вопрос задан
  • 365 просмотров
Решения вопроса 1
mgyk
@mgyk
Поднимайте лучше из схемы (schema.rb) и храните ее в git. Нужно, чтобы были только те миграции которые актуальны для продакшена +/- несколько если нужно роллбэк сделать. Держать всю историю миграций с начала проекта не нужно. То-есть можно задампить схему на продакшене и утянуть ее в git. Это и будет вашей точной отсчета
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы