heroku db上的404错误:推送

时间:2012-09-25 21:27:54

标签: ruby-on-rails-3 git heroku migration taps

尝试通过Taps将数据库推送到Heroku时出现404错误

(1.9.2@[app_name]_db) heroku db:push --app [app_name]
Loaded Taps v0.3.24
Auto-detected local database: sqlite://db/development.sqlite3
Warning: Data in the app '[app-name]' will be overwritten and will not be recoverable.

 !    WARNING: Destructive Action
 !    This command will affect the app: [app-name]
 !    To proceed, type "[app-name]" or re-run this command with --confirm [app-name]

> [app-name]
Sending schema
Schema:          0% |                                          | ETA:  --:--:--
Saving session to push_201209251425.dat..
!!! Caught Server Exception
HTTP CODE: 404

db:push命令用于正常工作,然后我通过回滚迁移,编辑迁移然后重新迁移对数据库进行了一些更改。现在我可以很好地部署应用程序,但数据库不会推送 - 我不知道这是否与编辑迁移有关。

该应用程序在我的机器上工作正常,我想消除Heroku的副本和我自己的副本之间的任何差异,所以我创建了一个新的应用程序并推动它。同样的事情:Heroku应用程序工作,但不会收到db:push;它错误地与上面的404相同。

这是Heroku服务暂时关闭,还是更改了我的应用程序导致404?

编辑:heroku日志不显示任何错误消息

3 个答案:

答案 0 :(得分:1)

Heroku支持需要很长时间才能响应,因此我找到了一种使用Taps gem直接与我的EC2实例通信的解决方法。

  1. 转到数据库的Heroku仪表板。对我来说,这是在

    https://postgres.heroku.com/databases/ [我的数据库名称]

    虽然我通过插件进行导航。

  2. 点击“连接设置”中的“网址”,应该为您提供类似

    的内容

    postgres的:// [用户名]:[密码] @ ec2- [ip_address_numbers] .compute-1.amazonaws.com:端口] / [DATABASE_NAME]

    将此值复制下来,我会在此处将其引用为[EC2_URL]

  3. 如果您还没有安装在1.9.2 gemset上的Taps(不确定1.9.3是否有效,不测试)

  4. 设置localhost点击服务器以通过在终端中运行来促进交易:

    点击服务器postgres:// [local_machine_username] @ localhost / [name_from_database.yml] [some_username] [some_password]

    (请注意用户名和密码前的空格)

  5. 然后您可以通过另一个终端窗口自行处理交易:

    点击拉[EC2_URL] http:// [some_username]:[some_password] @localhost:5000

  6. 它应该运行并将所有数据从本地开发数据库提取到Amazon实例。您也可以反之亦然,或选择其他数据库等。或者不,我不是警察。

答案 1 :(得分:0)

heroku db命令和ruby 1.9.2存在一些问题(我有这个版本) db:pull以“无法从中获取表信息”结束 db:push以“!!! Caught Server Exception HTTP CODE:404”

结束

这个问题有一个解决方法。切换到ruby 1.8.7(我正在使用rvm)片刻只是为了在heroku上执行数据库操作并在完成后切换ruby之后。

答案 2 :(得分:0)

我做了同样的过程(让Heroku将我的sqlite数据库转换为Postgres),我昨天也遇到了这个问题。它似乎现在正在工作,所以我相信这是Heroku的一个问题。