Ошибка Heroku Postgres: PGError: ERROR: отношения "организации" не существуют (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.
Ответы
Ответ 1
У меня была та же проблема. Чтобы решить эту проблему, сбросить базу данных проще.
- heroku rake db: reset ('heroku run rake db: reset', если вы на кедре)
- heroku rake db: migrate ('heroku run rake db: migrate', если вы на кедре)
Затем миграция была успешно выполнена для моего случая:)
Хотя это хорошее решение в этом контексте, не делайте этого при производстве. Он удалит все записи из вашей базы данных
Ответ 2
В соответствии с моим опытом (Rails 3.1, Sedar stack) после запуска pg:reset
и db:migrate
вам может потребоваться запустить heroku restart
.
Ответ 3
У меня была такая же проблема, пока я не понял, что мне нужно делать:
heroku rake db:migrate
:)
Ответ 4
Моя версия героя:
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
Ответ 5
В моем случае я также должен был уничтожить и воссоздать свое приложение. Я запустил rake db: migrate с файлом миграции, который не был зафиксирован, и по какой-то причине pg: reset не работал.
Ответ 6
Вы используете урок? У меня была эта точная проблема при обновлении до версии 2.0. Вам нужно вручную изменить файл миграции.
https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0-migration-schema-style
Ответ 7
Видимо, удаление всего моего приложения, а затем повторное развертывание с нуля исправило его. Я понятия не имею, в чем проблема.
Ответ 8
В моем случае симптомы были одинаковыми, но первопричина и лекарство оказались несколько разными. Потрачено на это. Надеюсь, этот пост спасет кого-то еще в те часы!
Я использую:
Все работает нормально на SQLite, но получает ту же ошибку PG на Heroku. Оказывается, что ActiveScaffold каким-то образом препятствует успешному выполнению задач рейка Heroku из-за ошибки, аналогичной предыдущей. Таким образом, вы получаете кеш 22, где вы получаете ту же ошибку, если пытаетесь запустить heroku rake db: migrate или подобное.
Теперь исправление:
-
Комментируйте блоки кода, похожие на следующие из всех контроллеров, которые используют "active_scaffold":
active_scaffold :<model_name> do |conf|
end
- Commit, push to heroku
-
heroku run rake db:migrate
- Убедитесь, что все в порядке, запустив
heroku run rails console
, а затем произнесите создание модели и сохраните ее.
- Теперь верните изменения (т.е. верните блок
active_scaffold
выше)
- commit, push to heroku
- Вы находитесь в бизнесе!
Ответ 9
Я поддерживаю локальную настройку как можно ближе к производству, включая использование базы данных postgresql, поэтому у меня была эта проблема на моей локальной машине. В любом случае я не могу удалить свою производственную базу. Оказалось, что мой вопрос был только в тесте, поэтому я использовал: rake db: test: подготовьтесь к его исправлению.
Ответ 10
rake db:drop
rake db:create
rake db:migrate
Ответ 11
После нескольких часов просеивания через ответ я понял, что когда вы укажете
rails new MYAPP -database POSTGRESQL
он изменяет файл .gitignore, игнорируя весь /db/ directory
, поэтому моя база данных никогда не подталкивалась к героку. Удалите его с осторожностью или, по крайней мере, не введите свое имя пользователя и пароль там, где вы нажимаете.
Ответ 12
У меня была аналогичная проблема, и я решил heroku run rake db:reset
и heroku run rake db:migrate
устранить проблему. Я думаю, что я просто не выполнял правильные миграции, чтобы исправить эту проблему.
Ответ 13
Могут быть много причин для этой ошибки. Однако для моего приложения проблема заключалась в том, что я не выходил из приложения, прежде чем запускал миграцию (?). Итак, перейдем к этому пути:
http://name_of_my_app.herokuapp.com/logout
исправил проблему для меня.