12

我想从数据库创建备份,但我只得到一个空白文件。

include('config.php');

$command = "mysqldump --opt -h ".$_host." -u ".$_user." -p ".$_pass." ".$_db." > test.sql";
exec($command);

echo "<br />".$command;

test.sql 在 .php 文件所在的位置创建。

编辑:

笔记!我正在使用 XAMPP WINDOWS !

解决方案:

因为我使用的是 Windows Web Server (XAMPP),所以我需要指定路径:

$command = 'd:\xampp\mysql\bin\mysqldump --opt -u '.$_user.' -p'.$_pass.' '.$_db.' > test.sql';
  1. 我删除了 -p 和 pass 之间的空格。看起来像:-pMYPASSWORD
  2. 替换"'

我认为如果您使用的是基于 Linux 的 Web 服务器,则不必指定 mysqldump 的路径。

干杯! :-)

4

7 回答 7

4

这些是参数

-uROOT -pPASSWORD --databases DB --result-file=FILE.SQL

于 2012-08-17T10:51:14.390 回答
4

试试这个:

$command = 'd:\xampp\mysql\bin\mysqldump --opt -u '.$_user.' -p'.$_pass.' '.$_db.' > test.sql 2>&1';

-关于权限问题。

于 2013-10-04T19:42:02.770 回答
0

对于 Mac 上的用户

我今天整个晚上都在与这个问题作斗争。愚蠢的错误:需要 chmod 将文件转储到的目录。

我运行了这个解决了这个问题:

chmod -R 777 your_dump_directory/
于 2014-01-25T07:38:23.843 回答
0

从引号中取出变量并删除--opt。

还要确保您拥有唯一的文件名

$backupfile = $dbname . date("Y-m-d-H-i-s") . '.sql';

$command = "D:\xampp\mysql\bin\mysqldump -u $_user -p$_pass $_db > $backupfile";

system($command);

于 2013-06-12T17:26:57.537 回答
0

您应该删除 -p 和密码之间的空格。

--opt最新版本的 mysql 不需要。

除此之外,您的语法是正确的,因此如果它不适用于 -p 修复,您应该检查参数和生成的命令。

于 2012-08-17T10:47:47.650 回答
0

如果您查看exec手册,输出将转到作为第二个参数的数组。这可能是问题的根源。

于 2012-08-17T10:58:34.337 回答
0

尝试这个:

$DBUSER="user";
$DBPASSWD="password";
$DATABASE="DBname";

$filename = "backup-" . date("d-m-Y") . ".sql";

$command = '"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe" '.$DATABASE ." -u".$DBUSER ." -p".$DBPASSWD." > your_web_site/$filename";
passthru($command);
  • 将路由更改为您计算机的 mysqldump.exe 应用程序的方向。
  • 尊重命令中的“”。

然后强制下载文件:

if (file_exists("your_web_site/".$filename)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($filename).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
readfile("your_web_site/".$filename);
exit;
}

编辑:您必须授予保存副本的文件夹的权限。

于 2016-05-26T09:35:07.623 回答