【问题标题】:Heroku and Sqlite3 problemsHeroku 和 Sqlite3 问题
【发布时间】:2012-09-06 01:24:32
【问题描述】:

尝试将一个非常基本的 Rails 应用程序部署到 Heroku。它在 sqlite3 上运行,我在部署它时遇到了一些问题。

首先,我确定 gem 列出了正在开发的 sqlite3。这让索引页面终于可以工作了,但是现在当我部署它并尝试按照链接指向实际依赖我的数据库的页面部分时,heroku 错误。我盯着日志看了一会儿,不知道发生了什么,所以我希望这里有人可以。我现在只发布似乎是最后一个操作的日志(按照链接):

2012-09-13T01:00:23+00:00 heroku[router]: GET bloc-blog-1.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=187ms status=200 bytes=531
2012-09-13T01:00:24+00:00 heroku[router]: GET bloc-blog-1.herokuapp.com/assets/application-0149f820dbdd285aa65e241569d8c256.css dyno=web.1 queue=0 wait=0ms service=9ms status=200 bytes=811
2012-09-13T01:00:24+00:00 heroku[router]: GET bloc-blog-1.herokuapp.com/assets/application-1c74ddb87f4b5b3c36c58d068d148c95.js dyno=web.1 queue=0 wait=0ms service=9ms status=200 bytes=99469
2012-09-13T01:00:27+00:00 app[web.1]: 
2012-09-13T01:00:27+00:00 app[web.1]: 
2012-09-13T01:00:27+00:00 app[web.1]: Started GET "/posts" for 50.131.223.42 at 2012-09-13 01:00:27 +0000
2012-09-13T01:00:27+00:00 app[web.1]: Processing by PostsController#index as HTML
2012-09-13T01:00:27+00:00 app[web.1]: Completed 500 Internal Server Error in 75ms
2012-09-13T01:00:27+00:00 app[web.1]: 
2012-09-13T01:00:27+00:00 app[web.1]: LINE 4:              WHERE a.attrelid = '"posts"'::regclass
2012-09-13T01:00:27+00:00 app[web.1]:                                         ^
2012-09-13T01:00:27+00:00 app[web.1]: :             SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
2012-09-13T01:00:27+00:00 app[web.1]:               FROM pg_attribute a LEFT JOIN pg_attrdef d
2012-09-13T01:00:27+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::Error: ERROR:  relation "posts" does not exist
2012-09-13T01:00:27+00:00 app[web.1]:                 ON a.attrelid = d.adrelid AND a.attnum = d.adnum
2012-09-13T01:00:27+00:00 app[web.1]:              WHERE a.attrelid = '"posts"'::regclass
2012-09-13T01:00:27+00:00 app[web.1]: ):
2012-09-13T01:00:27+00:00 app[web.1]: 
2012-09-13T01:00:27+00:00 app[web.1]:   app/controllers/posts_controller.rb:5:in `index'
2012-09-13T01:00:27+00:00 app[web.1]:                AND a.attnum > 0 AND NOT a.attisdropped
2012-09-13T01:00:27+00:00 app[web.1]: 
2012-09-13T01:00:27+00:00 app[web.1]:              ORDER BY a.attnum
2012-09-13T01:00:27+00:00 heroku[router]: GET bloc-blog-1.herokuapp.com/posts dyno=web.1 queue=0 wait=0ms service=86ms status=500 bytes=643

谢谢!

【问题讨论】:

    标签: deployment heroku sqlite github


    【解决方案1】:

    Heroku 使用 PostgreSQL。按照Rails Tutorial Book 中的说明在本地安装 PostgreSQL,以便您可以复制 Heroku DB 环境。 Heroku itself 以及几乎每个教程都警告说,在 sqlite3 中开发然后部署到 PostgreSQL 是充满危险的。

    【讨论】:

    • 我不是 Heroku 内部的专家,但信息很清楚。错误在 a.attrelid = '"posts"'::regclass 中。这对于 SQL 来说是垃圾。 PostgreSQL ActiveRecord 实现正在创建语法 '"posts"'::regclass,这对 SQL 解析器来说毫无意义。没有你的代码就不可能说更多。
    • 嗯。我的代码中的问题可能出在哪里?我不知道从哪里开始寻找。 (我确实按照建议包含了 railstutorial.org 中的 pg gem)。
    • 另一个令人困惑的事情是这几乎都是脚手架。我根本没有改变太多,它在本地服务器上完美运行。
    • 嗯,确实,或者可能是…… app/controllers/posts_controller.rb:5:in `index'。当然我没有那条线。我再说一遍,如果你在本地运行 sqlite3,那么在本地机器上完美运行并不意味着在 Heroku 上运行。安装 PG 的说明非常简单。大约需要1/2小时。你可能已经用了那么多时间给我打字了 ;-)
    • 对。正如我上面所说,我安装了PG。 (并推送到 git,然后再次推送到 heroku)。花了大约 5 分钟,但它没有解决任何问题。任何。 post_controller 中的错误行是由脚手架生成的,这主要是令人困惑的,因为 Rails 开箱即用的脚手架不应该导致错误,对吧?无论如何,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2016-08-26
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多