Heroku rake db: migrate не создает таблицы (Rails 5) - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть приложение на Rails 5, и я хотел уничтожить и восстановить свою работающую базу данных (сайт еще не запущен).Поэтому я выполнил шаги, которые должны были работать (раньше они работали):

  1. heroku pg: сброс HEROKU_POSTGRESQL_HEROKUCOLOR_URL --confirm {app_name}
  2. heroku run rake db: migrate
  3. heroku run rake db: seed

Шаги 1 и 2 завершены успешно, а шаг 3 завершается ошибкой («adminsettings» - одна из моих таблиц):

Running rake db:seed on {app_name}... starting, run.7198 (Hobby)
Running rake db:seed on {app_name}... connecting, run.7198 (Hobby)
Running rake db:seed on {app_name}... up, run.7198 (Hobby)
rake aborted!
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "adminsettings" does not exist
LINE 8:                WHERE a.attrelid = '"adminsettings"'::regclas...

Если я запускаю heroku pg: info, который он возвращает, у меня есть 2 таблицы (у меня должно быть около 10), так что, как будто шаг 2 не выполнен (хотя ошибки не было).Если я проверяю pgAdmin4, я вижу только 2 таблицы: ar_internal_metadata и schema_migrations, которые не являются моими пользовательскими таблицами.

Я удалил все миграции после того, как убедился, что они находятся в моем файле schema.rb, поэтому в действительности миграции не нужны - простостол творений.Итак, мой первый вопрос: использует ли 'heroku rake db: migrate' (должен!) Просто файл schema.rb для создания таблиц?

Это приложение Rails 5.2.2, но оно начиналось какПриложение Rails 4.x и я обновили все гемы по пути.Будет ли это причиной как-то?До сих пор не было никаких проблем, кроме тех случаев, когда я пытался это разрушительное восстановление.В противном случае у меня нет идей.И я не вижу отладочной информации о том, что происходит не так.

1 Ответ

0 голосов
/ 26 сентября 2019

rake db:migrate не загружает файл schema.rb.Это только запустит миграцию.Если вы хотите загрузить схему, вы можете использовать rake db:schema:load.

. Возможно, вам также следует быть осторожным, если вы восстановите свои миграции для повторного запуска, поскольку таблица schema_migrations, вероятно, содержит записи всех ваших миграций.уже побежав.Вам также нужно очистить эту таблицу (удалить записи, а не отбрасывать таблицу), чтобы указать, что ваши миграции должны выполняться снова.

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