У меня есть 3 экземпляра моего рельсового приложения на героку (тест, этап и производство). Когда я хочу проверить проблему, возникающую с данными реальных пользователей, я хотел бы выполнить heroku db: pull --app production, а затем heroku db: push --app test. Проблема в том, что на этом этапе heroku rake db: migrate --app test выдает ошибку, поскольку столбцы, которые пытается создать миграция, уже созданы.
Насколько я понимаю, heroku db: push помещает данные в существующую схему базы данных, а не буквально передает всю базу данных (включая схему). Это означает, что схема, к которой мы обращаемся, может быть более продвинутой, чем таблица миграции, к которой мы обращаемся, поскольку в этой таблице миграции будут отсутствовать записи миграции, которые не запускались в базе данных, из которой мы извлекли, но, очевидно, работали в базе данных, к которой мы подталкиваем .
Мой первый вопрос: правильно ли я понимаю, как это работает? Мой второй вопрос: как мне это исправить, чтобы я мог извлекать производственные данные, вставлять их в тестирование и запускать миграции без получения этой ошибки. В идеале я хотел бы скопировать производственную базу данных и вставить ее в тест, а затем полностью перенести ее, поскольку, если бы я мог это сделать, мне не пришлось бы беспокоиться о существующей схеме в тесте. Есть ли способ сделать это?
Если нет, есть ли способ подделать, что миграции уже выполнены, заполнив новую таблицу миграций записями для каждой миграции, которая уже запущена в моей тестовой базе данных?