Ошибка Heroku Postgres: PGError: ОШИБКА: организация отношений не существует (ActiveRecord::StatementInvalid)

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

PGError: ОШИБКА: отношение "организации" не существует (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.


person Mark    schedule 27.03.2011    source источник
comment
Таблица организаций, похоже, не существует. вы выполнили миграцию?   -  person Shreyas    schedule 27.03.2011
comment
Спасибо @shreyas, да, миграция была запущена, и вот результат: == CreateOrganizations: migrating ============================ ================ -- create_table(:organizations) --> 0,0175s -- add_index(:organizations, [:organization_type], {:name=›organizations_index}) --> 0,0054 s == CreateOrganizations: перенесено (0,0238 с) ==================================   -  person Mark    schedule 27.03.2011
comment
Кроме того, когда я захожу в консоль и проверяю: ›› ActiveRecord::Base.connection.tables =› [schema_migrations, jobs,organizations и т.д...   -  person Mark    schedule 27.03.2011
comment
Теперь, когда вы создали таблицу своих организаций, вы все еще сталкиваетесь с проблемой?   -  person Shreyas    schedule 27.03.2011
comment
Да, таблица организаций уже была создана, когда возникла проблема, спасибо...   -  person Mark    schedule 27.03.2011


Ответы (12)


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

  • heroku rake db:reset («heroku run rake db:reset», если вы на кедре)
  • heroku rake db:migrate ('heroku run rake db:migrate', если вы используете кедр)

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

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

person akipponn    schedule 13.07.2011
comment
ЕСЛИ вы используете приложение Cedar, команды должны быть: heroku run rake db:reset heroku run rake db:migrate Затем heroku restart и это должно быть исправлено. - person TimD; 17.02.2012
comment
@TimD Я запускаю приложение Cedar, и запуск не требуется. - person Spidy; 20.03.2012
comment
Мне пришлось rake db:drop, а потом rake db:create тоже - person Connor Leech; 30.10.2013
comment
А на производственной базе?? Вы не можете сбросить и потерять данные ¿? - person mariowise; 06.08.2014

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

heroku rake db:migrate

:)

person Victor S    schedule 08.04.2011

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

person a.b.d    schedule 08.01.2012
comment
Я боролся с Heroku добрых сорок минут, прежде чем решил попробовать это. Повторное развертывание, удаление (сброс) и перенос базы данных ничего не решили. - person Chris Cummings; 06.02.2012

Моя версия героку:

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
person Flavio Wuensche    schedule 24.10.2012

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

person Community    schedule 05.01.2012

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

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

person Tim Fletcher    schedule 12.06.2012

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

person Mark    schedule 27.03.2011
comment
Это не самое эффективное решение. Другие более высоко оцененные ответы лучше. - person imderek; 04.10.2012

В моем случае симптомы были те же, но первопричина и средство лечения оказались несколько другими. Потратил на это часы. Надеюсь, этот пост сэкономит кому-то еще эти часы! Я использую:

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

Теперь исправление:

  • Закомментируйте блоки кода, аналогичные следующим для всех контроллеров, использующих «active_scaffold»:

    active_scaffold :<model_name> do |conf|
    end
    
  • Подтвердить, нажать на героку
  • heroku run rake db:migrate
  • Убедитесь, что все в порядке, запустив heroku run rails console, а затем скажите, что создаете модель и сохраняете ее.
  • Теперь отмените изменения (т.е. верните блок active_scaffold выше)
  • зафиксировать, нажать на героку
  • ты в деле!
person paneer_tikka    schedule 13.04.2012

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

person Greg Silcox    schedule 24.10.2012

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

person gr1zzly be4r    schedule 22.06.2015

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

person Dave Sloan    schedule 15.02.2016

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

rails new MYAPP -database POSTGRESQL

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

person dominathan    schedule 24.06.2014