1

尝试通过 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 日志不显示任何错误消息

4

3 回答 3

1

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

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

    https://postgres.heroku.com/databases/[my-database-name]

    虽然我通过插件导航。

  2. 单击“连接设置”中的“URL”,应该会给你类似的东西

    postgres://[username]:[password]@ec2-[ip_address_numbers].compute-1.amazonaws.com:[port]/[database_name]

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

  3. 如果您还没有安装 Taps,请在 1.9.2 gemset 上安装它(不确定 1.9.3 是否可以工作,没有测试)

  4. 通过在终端中运行来设置 localhost taps 服务器以促进事务:

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

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

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

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

它应该运行并将所有数据从本地开发数据库拉到亚马逊实例。您也可以反之亦然,或者选择不同的数据库等。或者不是,我不是警察。

于 2012-09-26T00:59:54.747 回答
0

heroku db 命令和 ruby​​ 1.9.2 存在一些问题(我有这个版本)。
db:pull 以“Unable to fetch tables information from”
结尾 db:push 以“!!! Caught Server Exception HTTP CODE: 404”结尾

有一个解决此问题的方法。暂时切换到 ruby​​ 1.8.7(我为此使用 rvm)只是为了在 heroku 上执行 db 操作,然后在完成切换 ruby​​ 后返回。

于 2012-09-26T15:11:57.970 回答
0

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

于 2012-09-26T21:49:56.550 回答