2013-09-08 4 views
1

Получение ошибки миграции при попытке переноса моей базы данных на Heroku. Нашли решение, предлагающее этот совет:Ошибка миграции протокола Heroku DB

rake db:create 
rake db:schema:load 
rake db:migrate 

но это не повлияло. Ошибка начинается так:

PG::UndefinedColumn: ERROR: column "property_id" of relation "bookings" does not exist 

У меня нет колонки PROPERTY_ID больше, как это переоделся в более поздние миграции на местном уровне. Мои миграции работают локально, так почему бы и нет на Heroku?

+0

rake db: migrate перенесет вашу локальную базу данных. Попробуйте «heroku run rake db: migrate» и расскажите, что произойдет, пожалуйста. Проверьте этот документ (https://devcenter.heroku.com/articles/rake). –

ответ

0

Не могли бы вы опубликовать свою схему, чтобы я мог видеть, есть ли у вас столбец «property_id».

Если вы этого не сделаете, вам придется добавить этот столбец property_id в класс брони.

Также попробуйте

грабли БД: падение грабли БД: мигрировать

, что происходит?

+1

Это было бы шагом назад, не так ли? Я использовал heroku rake db: schema: load и это решило проблему – tommyd456

+0

Я думал, вы сказали, что попробовали это, и это дало вам ошибку. Вам не нужно загружать схему, если все ваши миграции корректны. Пожалуйста, разместите свою схему и текущие ошибки. – Tyler

+0

Да, это не сработало, и тогда это было так, что я полностью смутился! ха-ха, спасибо за помощь в любом случае – tommyd456

0

Проводили ли вы миграцию данных в базу данных postgres и локальную версию вашего героя? Похоже, что таблица schema_migrations не синхронизирована с реальностью на вашем экземпляре heroku.

Если вы можете потерять все данные, я бы только начал. Следующая команда будет уничтожить всю базу данных, уничтожить все таблицы:

heroku pg:reset # destructive action, careful

После этого, попробуйте heroku run rake db:migrate снова; он должен работать.

Если это не сработает, вам, вероятно, придется вручную осмотреть таблицу schema_migrations и убедиться, что правильные миграции были применены и, возможно, вручную вернули ее в согласованное состояние.

Эта ситуация довольно ненормальна и может произойти только вручную, касаясь этих данных или схемы. Поскольку postgres поддерживает транзакционный DDL, он не может быть выполнен только через heroku run rake db:migrate, так как в случае ошибок вся миграция возвращается назад, а база данных остается в согласованном состоянии.

Смежные вопросы