1

我将使用 ActiveRecord 的应用程序部署到 Heroku,但出现内部服务器错误。它在我的本地机器上运行良好(数据库是 SQLite)。以下是错误的日志消息。newsletters 表只是一个没有关联的表。它只有一个用于电子邮件地址的字段。我不知道 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
4

3 回答 3

1

我认为 Heroku 会找到您的本地数据库,因此您只需编写:

heroku db:push

如果你想从服务器获取数据:

heroku db:pull
于 2010-07-06T19:31:22.730 回答
0

我解决了我的问题。我所要做的就是heroku db:push sqlite://db/local.db

于 2010-07-06T17:09:01.597 回答
0

这个问题的根源在于 ActiveRecord 试图通过称为“目录查询”的东西来理解给定表的结构。这是对数据库元数据关系的查询,以了解其中发生了什么。

这个查询假设关系已经存在,并且因为它不存在,所以它用一个神秘的消息炸毁了。这可能属于“将其报告给 ActiveRecord”(如果尚未修复)的区域,作为某种常见故障情况下的次理想错误消息。

于 2011-10-02T03:40:41.657 回答