2

使用 Rails 3.2.2,完成从 sqlite 到 postgres 9.2 的迁移。在本教程中使用答案作为安装 postgres 的指南,并在第 11 步中询问运行heroku db:pull我得到的位置:

Failed to connect to database: Sequel::AdapterNotFound -> LoadError: cannot load such file --pg

我深入挖掘并发现 db:pull (taps gem) 已被弃用,并且遇到了一些关于 pg:transfer 的建议。安装了 pg:transfer,但我觉得它可能是 *nix only(?) 就好像我运行一样:heroku pg:transfer它返回:

Heroku client internal error. No such file or directory - .env (Errno:ENOENT)

如果我使用 -f 和 -t 执行 pg:transfer 它会给我: 'env' is not recognized as an internal or external command, operable program or batch file这意味着它没有绑定到路径或不作为 Windows 中的命令存在。

对上述错误有任何想法吗?

4

2 回答 2

1

通过使用 pg:backups gem 解决,在 Heroku 文档中被推荐作为水龙头的替代品。我使用本指南并将我的转储上传到 Dropbox 以供 Heroku 提取。

这是我的步骤和 cmds 的确切列表:

  1. 将 heroku.com 附加组件中的 pgbackups 添加到我的实例中。
  2. heroku pgbackups:capture DATABASE(这只是备份你的heroku db)
  3. pg_dump -h localhost -U <pg username> -Fc dbname > dbname.dump
  4. 将 dbname.dump 移动到我的保管箱上的文件夹中
  5. 在 Dropbox 中,右键单击 dbname.dump =>“共享链接”
  6. 取消分享对话框弹出,右击“下载按钮”,复制链接地址(Chrome)
  7. heroku pgbackups:restore DATABASE <paste dropbox download link here>

Dropbox 技巧:不要使用 Dropbox 提供的文件链接,因为它是一个 html 重定向,并且会导致 pg:restore 失败,即使扩展名以 .dump 结尾

相反,导航到您的 Dropbox 页面并在“下载”按钮上“右键单击复制链接地址”。那是您在 pgbackups:restore 中使用的地址(应该类似于db.dump?token=<long random string>

有点笨拙,但完成了工作。如果您知道更好的方法,请告诉我!

于 2013-04-15T16:21:10.167 回答
0

您需要制作一个 .env 文件,其中包含以下内容:

DATABASE_URL=postgres://localhost/myapp_development

参考:

于 2013-04-14T02:58:19.580 回答