【问题标题】:Postgres pg_dump never endPostgres pg_dump 永无止境
【发布时间】:2019-01-22 12:18:01
【问题描述】:

如果我在命令行上执行下面的命令,它工作得很好

C:\\Program Files\\PostgreSQL\\10\\bin\\pg_dump.exe" -U postgres -h localhost -d mydb -f "C:\\backup\\backUp.sql" 2>&1'

当我通过脚本执行相同的操作后,它永远不会结束。

<?php print_r(exec('"C:\\Program Files\\PostgreSQL\\10\\bin\\pg_dump.exe" -U postgres -h localhost -d mydb -f "C:\\backup\\backUp.sql" 2>&1'));?>

【问题讨论】:

  • 我想知道一个很好的拒绝投票的理由,我花了几个小时问了这个问题

标签: php postgresql


【解决方案1】:

所以,我能够跟踪实际问题,代码不是真正的问题,主要是环境变量没有设置,设置这些东西后开始顺利运行,

您可以在Window 10中设置环境变量如下,

;C:\Program Files\PostgreSQL\10\bin ;C:\Program Files\PostgreSQL\10\lib

请注意:在 Windows 10 上,如果您按照以下步骤操作:计算机 => 属性 => 高级系统设置=> 环境变量 => 系统变量> 选择 PATH,您实际上可以选择添加新行。单击编辑,添加 /bin 和 /lib 文件夹位置并保存更改。

之后您将面临“密码无效”“密码提示”的问题,为避免这种情况,只需使用 SET PGPASSWORD=P0stgres& 如下所示,

<?php print_r(exec('SET PGPASSWORD=yourpassword pg_dump -U postgres -h localhost -d mydb -f "C:\\backup\\backUp.sql" 2>&1'));?>

如果上述方法不起作用,请将 & 放在您的密码之后。

<?php print_r(exec('SET PGPASSWORD=yourpassword& pg_dump -U postgres -h localhost -d mydb -f "C:\\backup\\backUp.sql" 2>&1'));?>

非常感谢下面的问题终于解决了这个问题:)

Postgres "psql not recognized as an internal or external command"

Setting PGPASSWORD environment variable for Postgres (psql) process executed by Inno Setup

【讨论】:

    【解决方案2】:

    先试试这个:

    <?php
    
    $command = exec("C:\\Program Files\\PostgreSQL\\10\\bin\\pg_dump.exe -U postgres -h localhost -d mydb -f 'C:\\backup\\backUp.sql' 2>&1");
    print $command;
    ?>
    

    如果没有退出,则需要检查登录后是否有内部方式退出PostgreSQL。 您可以在命令中添加一些内容,例如 &amp;&amp; exit

    【讨论】:

    • 我试过但得到“可运行的程序或批处理文件”。现在留言
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 2021-08-26
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多