【问题标题】:How to run postgresql command in heroku app runnning java application?如何在运行 java 应用程序的 heroku 应用程序中运行 postgresql 命令?
【发布时间】:2016-03-11 17:25:52
【问题描述】:

我在 heroku 上运行 java web 应用程序。现在我正在尝试从应用程序中获取 sql 转储文件。

ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "pg_dump  -U postgres -Fc --schema=" + schema + " " + dbName + " >" + path);

上面的代码在有windows的本地机器上完美运行。

问题是,如何使用 process builder 或 java 应用程序中的任何其他方法从 heroku 托管应用程序获取转储文件?

提前谢谢...

【问题讨论】:

    标签: java postgresql heroku playframework playframework-2.4


    【解决方案1】:

    您正在创建一个似乎正在使用 Windows 命令的进程。我相信您的 Heroku 实例是 Windows 的概率为零。

    如果您想获得数据库的转储,您应该检查the documentation

    $ heroku pg:backups capture
    $ curl -o latest.dump `heroku pg:backups public-url`
    

    【讨论】:

    • 你可以尝试安装 Linux 并让你的 ProcessBuilder 工作。
    • Steve,我想在 heroku 托管应用程序上执行此操作。有没有我可以从 java 做的代码?
    • 如果您在测功机上运行该命令,您将无法访问转储文件。
    【解决方案2】:

    你需要使用Linux命令:

    ProcessBuilder builder = new ProcessBuilder("/usr/bin/pg_dump", "-U postgres -Fc --schema=" + schema + " " + dbName + " >" + path);
    

    但是,这仅是因为 pg 工具已为您安装在测功机上。但这样一来,您将无法访问您转储的文件。所以你还需要执行一些代码将其上传到 S3 或其他东西。

    还要确保您使用正确的用户名和密码。它很可能不是“postgres”。

    【讨论】:

    • 谢谢codefinger,你能把要执行的代码发给我在S3上上传吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    相关资源
    最近更新 更多