导出数据库转储文件不正确

时间:2013-12-04 18:34:30

标签: php mysql dump

我正在尝试使用按钮创建一个页面,点击后会下载名为sampledb的数据库。

这是我的backup.php

<?php
ob_start();

$username = "root";
$password = "";
$hostname = "localhost";
$dbname   = "sampledb";

$command = "C:\\wamp\\bin\\mysql\\mysql5.5.24\\bin\\mysqldump --add-drop-table --host=" . $hostname . "--user=". $username ." --password=". $password." ".$dbname;
system($command);

$dump = ob_get_contents();
ob_end_clean();

// send dump file to the output
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=sqlfile.sql');
readfile('sqlfile.sql');
flush();
echo $dump;
exit();
?>

出口成功。但是,当我在下载文件夹中检查下载的文件(sqlfile.sql)时,其文件大小仅为2kB。我尝试使用phpMyAdmin导出sampledb,发现实际文件大小为9kB。

此外,当我尝试通过phpMyAdmin导入sqlfile.sql时,收到错误消息。它说Warning: readfile(sqlfile.sql)

我的导出代码有问题。有什么建议吗?

更新20131205

我尝试将> sqlfile.sql附加到我的代码的这一部分。

$command = "C:\\wamp\\bin\\mysql\\mysql5.5.24\\bin\\mysqldump. --add-drop-table --host=" . $hostname . "--user=". $username ." --password=". $password." ".$dbname;

文件大小仍然不正确。我无法将下载的文件上传到phpMyAdmin。

END UPDATE

1 个答案:

答案 0 :(得分:0)

需要将

mysqldump转储到文件中,否则只会将结果作为文本返回。

通常这是通过重定向到文件来完成的:

mysqldump --... > dump.sql