Heroku Postgresql ошибка - PullRequest
       17

Heroku Postgresql ошибка

1 голос
/ 06 июля 2010

Я развернул приложение, использующее ActiveRecord в Heroku, и получил внутреннюю ошибку сервера. Он отлично работает на моей локальной машине (где база данных SQLite). Ниже приведено сообщение журнала об ошибке. Таблица новостных рассылок - это просто таблица без ассоциаций. У него есть только одно поле для адресов электронной почты. Я не знаю PostgreSQL, и я не уверен, в чем проблема с этим.

"ActiveRecord::StatementInvalid - PGError: ERROR:  relation "newsletters" does not exist
:             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 = '"newsletters"'::regclass
               AND a.attnum > 0 AND NOT a.attisdropped
             ORDER BY a.attnum
:

Это код, который вызывается при появлении ошибки.

  post :index, :map => "/newsletter" do
    email=params[:email]
    @signup=Newsletter.new(:email=>email)
    render "newsletter/index",:layout => false
  end

Ответы [ 3 ]

1 голос
/ 06 июля 2010

Я думаю, что Heroku найдет вашу локальную базу данных, поэтому вам просто нужно написать:

heroku db:push

А если вы хотите получить данные с сервера:

heroku db:pull
0 голосов
/ 02 октября 2011

Корень этой проблемы в том, что ActiveRecord пытается понять структуру данной таблицы с помощью так называемого «запроса каталога».Это запрос к отношениям метаданных базы данных, чтобы понять, что там происходит.

В этом запросе предполагается, что отношение уже существует, а поскольку его нет, оно взорвалось загадочным сообщением.Вероятно, это относится к области «сообщить об этом в ActiveRecord» (если она еще не исправлена) как неидеальное сообщение об ошибке в довольно частом случае сбоя.

0 голосов
/ 06 июля 2010

Я исправил свою проблему. Все что мне нужно было heroku db:push sqlite://db/local.db

...