尝试通过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日志不显示任何错误消息
答案 0 :(得分:1)
Heroku支持需要很长时间才能响应,因此我找到了一种使用Taps gem直接与我的EC2实例通信的解决方法。
转到数据库的Heroku仪表板。对我来说,这是在
https://postgres.heroku.com/databases/ [我的数据库名称]
虽然我通过插件进行导航。
点击“连接设置”中的“网址”,应该为您提供类似
的内容postgres的:// [用户名]:[密码] @ ec2- [ip_address_numbers] .compute-1.amazonaws.com:端口] / [DATABASE_NAME]
将此值复制下来,我会在此处将其引用为[EC2_URL]
如果您还没有安装在1.9.2 gemset上的Taps(不确定1.9.3是否有效,不测试)
设置localhost点击服务器以通过在终端中运行来促进交易:
点击服务器postgres:// [local_machine_username] @ localhost / [name_from_database.yml] [some_username] [some_password]
(请注意用户名和密码前的空格)
然后您可以通过另一个终端窗口自行处理交易:
点击拉[EC2_URL] http:// [some_username]:[some_password] @localhost:5000
它应该运行并将所有数据从本地开发数据库提取到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的一个问题。