Postgres pg_dump永无止境

时间:2019-01-22 12:18:02

标签: php postgresql

如果我在命令行上执行以下命令,则效果很好

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'));?>

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

首先尝试:

<?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的方法。 您可以添加到命令中的内容,例如&& exit