Что вызывает 'PG: undefinedColumn: ERROR:' при выполнении начального героя rake db: migrate - PullRequest
0 голосов
/ 10 июля 2020

Наконец-то мое приложение было впервые развернуто на Heroku. И я получаю традиционное сообщение «Что-то пошло не так»

Затем я запускаю heroku rake db: migrate

И затем получаю следующую ошибку, когда сервер начинает создавать схему db

PG :: UndefinedColumn: ОШИБКА: столбец «national_race_id» не существует

Это, конечно, столбец, который существует в одном из этих файлов миграции. Приложение работало полностью нормально, запуская его локально.

$ heroku run rails db:migrate --app politiscale-01
Running rails db:migrate on politiscale-01... starting, run.6665 (Free)
Running rails db:migrate on politiscale-01... connecting, run.6665 (Free)Running rails db:migrate on politiscale-01... up, run.6665 (Free)
D, [2020-07-10T03:58:08.378063 #4] DEBUG -- :    (1.3ms)  SELECT pg_try_advisory_lock(902490343136007465)
D, [2020-07-10T03:58:08.390478 #4] DEBUG -- :    (1.8ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
I, [2020-07-10T03:58:08.391630 #4]  INFO -- : Migrating to AddForeignKeyToCandidates (20200415034845)
-- add_index("candidates", "national_race_id")
D, [2020-07-10T03:58:08.401044 #4] DEBUG -- :    (2.2ms)  CREATE  INDEX  "index_candidates_on_national_race_id" ON "candidates"  ("national_race_id")
-- add_index("candidates", "national_race_id")
D, [2020-07-10T03:58:08.407393 #4] DEBUG -- :    (1.7ms)  CREATE  INDEX  "index_candidates_on_national_race_id" ON "candidates"  ("national_race_id")
D, [2020-07-10T03:58:08.409029 #4] DEBUG -- :    (1.3ms)  SELECT pg_advisory_unlock(902490343136007465)
rails aborted!
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:  column "national_race_id" does not exist

1 Ответ

0 голосов
/ 11 июля 2020

При подготовке базы данных с нуля вам лучше использовать db:schema:load, который загружает все из вашего db/schema.rb, чем пытаться запустить все ваши миграции. Это верно как локально, так и на Heroku. Если вы сохраните свой schema.rb в своем репо (как и должны), тогда это должно сработать:

% heroku pg:reset
% heroku run rails db:schema:load

Если вы обеспокоены тем, что schema.rb, который вы нажали, может быть не синхронизирован c с вашей базой данных «работает локально», запустите rails db:schema:dump, чтобы перестроить файл, зарегистрируйте его в своем репозитории и сначала создайте новый образ pu sh.

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