gpt4 book ai didi

php - 使用 PHP 的 Postgres 备份数据

转载 作者:行者123 更新时间:2023-11-29 14:05:04 25 4
gpt4 key购买 nike

我尝试用 PHP 脚本备份数据库。我的想法是使用 PHP 作为批处理文件运行 pg_dump。 (是的,我正在为 Windows 使用 PHP)。

我写这段代码:

$content = "set BACKUP_FILE=database.backup \r\n" .
"SET PGPASSWORD=" . COF_DATABASE_PASSWORD . "\r\n" .
"pg_dump -i -U " . COF_DATABASE_USERNAME . " -F c -b -v -f %BACKUP_FILE% " . COF_DATABASE_NAME . "\r\n" .
"echo done";

file_put_contents($root . "/Files/Updates/Backup.bat", $content);
$system = exec ($root . "/Files/Updates/Backup.bat", $result);
pclose(popen("start /B $root/Files/Updates/Backup.bat", "r"));
$result = shell_exec($root . "/Files/Updates/Backup.bat");

Backup.dat 文件已创建。如果我从 Windows 手动运行它,则会创建 database.backup 文件,但当我尝试从 PHP 运行批处理时则不会。对于这两个命令,我都得到 $result:

(string:241) D:\Data\WWW...\Process>set BACKUP_FILE=database.backup

D:\Data\WWW...\Process>SET PGPASSWORD=dom123

D:\Data\WWW...\Process>pg_dump -i -U dom -F c -b -v -f database.backup dom

一次作为数组 (exec),一次作为字符串 (shell_exec)。

然后我在想运行 bat 文件(即使我在代码中创建然后删除)不是最聪明的想法(安全)。所以我尝试用 SQL-s 备份数据库(PDO - 执行...)

但即使可能,我也找不到任何文档。所有解决方案都建议使用 pg_dump。是否有任何SQL命令可以将整个数据库备份到文件?

我正在寻找可行的解决方案。 SQL 或 .bat,此时并不重要。

已编辑:

也试试:

$string = "export PGPASSWORD=" . COF_DATABASE_PASSWORD . " && export PGUSER=" . COF_DATABASE_USERNAME . " && pg_dump -h localhost db_name " . COF_DATABASE_NAME . " > " . $root . "Files/Updates/Backup.sql && unset PGPASSWORD && unset PGUSER"; 
exec($string);
shell_exec($string);

已编辑(对 Craig Ringer 的回答):

尝试你的代码,我得到错误。 enter image description here1:捕获所有来自 this page 的一般错误

对于图片,在新标签页中打开链接以获得完整尺寸。

最佳答案

您可以尝试使用以下命令。我也有同样的问题。我通过使用附加代码解决了这个问题:

<?php
exec('pg_dump --dbname=postgresql://username:password@127.0.0.1:5432/mydatabase > dbbackup.sql',$output);
print_r($output);
?>

关于php - 使用 PHP 的 Postgres 备份数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25108524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com