Heroku Postgres ошибка: PGError: ошибка: отношение "организации" не существует (ActiveRecord:: StatementInvalid)

У меня проблема с развертыванием моего приложения Rails в Heroku, где эта ошибка возникает при попытке доступа к приложению:

PGError: ERROR: отношение "организации" не существует (ActiveRecord::StatementInvalid)

SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
  ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"organizations"'::regclass
  AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum

У кого-нибудь есть идеи? Это впервые для меня, особенно потому, что я работал с Heroku в течение года в других приложениях и не видел ничего подобного. Конечно, все работает на локальном SQLite.

13 ответов


У меня была та же проблема. Для ее решения проще сбросить базу данных.

  • heroku rake db: reset ("heroku run rake db: reset", если вы находитесь на кедре)
  • heroku rake db: migrate ("heroku run rake db: migrate", если вы находитесь на cedar)

затем миграция была успешно выполнена для моего случая:)

хотя это хорошее решение в этом контексте, не делайте этого на производстве. Он удалит все записи из вашего база данных


согласно моему опыту (Rails 3.1, SEDAR stack) после запуска pg:reset и db:migrate возможно, вам придется запустить heroku restart.


У меня была такая же проблема пока я не понял, что надо делать:

heroku rake db:migrate

:)


моя версия heroku:

heroku --version
#=> heroku-gem/2.29.0 (x86_64-linux) ruby/1.9.3

чтобы исправить это, просто откройте терминал и запустите:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME
heroku run rake db:setup
heroku restart
heroku open

в моем случае мне также пришлось уничтожить и воссоздать мое приложение. Я запустил rake db: migrate с файлом миграции, не зафиксированным, и по какой-то причине PG:reset не работал.


вы используете devise? У меня была эта точная проблема при обновлении до 2.0 - вы должны вручную изменить файл миграции.

https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0-migration-schema-style


по-видимому, удаление всего моего приложения, а затем повторное развертывание с нуля исправлено. Я понятия не имею, в чем была проблема.


все работает нормально локально на SQLite, но получить ту же ошибку PG на Heroku. Оказывается, ActiveScaffold каким-то образом предотвращает толчок Heroku успешный запуск задач rake из-за ошибки, подобной приведенной выше. Таким образом, вы получаете кэш 22, где вы получаете ту же ошибку, если пытаетесь запустить heroku rake db: миграция или аналогичные.

теперь исправления:

  • прокомментировать блоки кода, аналогичные следующим из все контроллеры, использующие "active_scaffold":

    active_scaffold :<model_name> do |conf|
    end
    
  • Commit, нажмите на heroku
  • heroku run rake db:migrate
  • убедитесь, что все хорошо бег!--2--> а затем скажите, что создаете модель и сохраняете ее.
  • теперь верните изменения (т. е. верните active_scaffold блок выше)
  • commit, нажмите на heroku
  • вы находитесь в бизнесе!

Я держу свою локальную настройку как можно ближе к производству, включая использование базы данных postgresql, поэтому у меня была эта проблема на моей локальной машине. Я все равно не могу удалить свою производственную базу данных. Оказалось, что моя проблема была только в тесте, поэтому я использовал: rake db:test: prepare, чтобы исправить это.


rake db:drop
rake db:create
rake db:migrate

у меня была аналогичная проблема и побежал heroku run rake db:reset и heroku run rake db:migrate чтобы устранить проблему. Я думаю, что я просто не правильной миграции решить проблему.


может быть много причин для этой ошибки. Однако для моего приложения Проблема заключалась в том, что я не вышел из приложения до запуска миграции (?). Итак, идем по этому пути.: http://name_of_my_app.herokuapp.com/logout Исправлена проблема для меня.


после нескольких часов просеивания ответа я понял, что когда вы указываете

rails new MYAPP -database POSTGRESQL

это меняет .gitignore файл, игнорируя весь /db/ directory, поэтому моя база данных никогда не подталкивалась к heroku. Удалите его с осторожностью или, по крайней мере, не имейте своего имени пользователя и пароля там, где вы нажимаете.