【问题标题】:Easy way to push postgres db to heroku in Win7? problems with db:pull and pg:transfer在 Win7 中将 postgres db 推送到 heroku 的简单方法? db:pull 和 pg:transfer 的问题
【发布时间】:2013-04-05 04:34:39
【问题描述】:

使用 Rails 3.2.2,完成从 sqlite 到 postgres 9.2 的迁移。 使用this 教程中的答案作为安装 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 中不作为命令存在。

对上述错误有什么想法吗?

【问题讨论】:

    标签: database postgresql heroku taps


    【解决方案1】:

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

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

    1. 将 heroku.com 插件中的 pgbackups 添加到我的实例中。
    2. heroku pgbackups:capture DATABASE(这只是备份你的 Heroku 数据库)
    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 结尾

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

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

    【讨论】:

      【解决方案2】:

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

      DATABASE_URL=postgres://localhost/myapp_development
      

      参考资料:

      【讨论】:

      • 我在我的应用程序的根目录中放置了一个“myapp.env”文件,其中包含关于设置 DATABASE_URL 的一行,然后运行heroku pg:transfer,它仍然通过.env not found 错误。它应该放在我的应用根目录中吗?
      • 另外,我收到了 pg:transfer 作者 ddollar 的回复,他提到他认为 pg:transfer 不会在 Windows 中工作。
      • 据我回忆,具体错误是关于尝试在项目根目录中读取名为.env(不是myproject.env)的文件。 Heroku 不要求您拥有.env 文件,并且可能支持替代语法,但pg:transfer 本身似乎正在寻找.env。但是,此外,它可能无法在 Windows 上运行。不能说这个,只能说我遇到的文件未找到错误。
      • thx,你说得对,它正在寻找刚刚命名为“.env”的东西出于好奇,我坚持了一点,你必须用命令行重命名文件(gui 不接受仅扩展名) ,但随后找不到数据库 URL,因此您必须创建它。从那里开始变得更加混乱,所以我决定暂时坚持使用 pgbackups
      猜你喜欢
      • 2013-06-24
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多