命令在php中恢复mysql db backup

时间:2013-10-12 07:00:24

标签: php mysql mysqldump restore

恢复db文件时遇到问题。下面是我用来恢复的脚本:

<?php
$dbhost   = "localhost";
$dbuser   = "root";
$dbpwd    = "";
$dbname   = "fhc_test";

$dumpfile = "backup/".$_GET['id'].".sql";

exec("C://xampp/mysql/bin/mysql -u $dbuser -p $dbpwd $dbname < $dumpfile");
?>

以下是我用来进行备份的脚本:

<?php
$dbhost   = "localhost";
$dbuser   = "root";
$dbpwd    = "";
$dbname   = "fhc";
date_default_timezone_set("Asia/Singapore");

$dumpfile = "backup/". $dbname . "_" . date("d-m-Y_H_i_s") . ".sql";

exec("C://xampp/mysql/bin/mysqldump --opt --host=$dbhost --user=$dbuser --password=$dbpwd $dbname > $dumpfile");
?>

备份文件时没有问题。当我复制n手动将备份内容粘贴到数据库中时,它可以完美地恢复而不会出现问题。但是当我运行还原脚本来执行还原时,文件会长时间加载而不会提示任何错误。所以,我停止加载,似乎没有表被恢复到数据库中。

当我尝试从cmd运行脚本时,可以完全快速地完成还原。在这种情况下,我将备份文件放在与mysql.exe相同的文件夹中

这就是我在cmd中执行命令的方法:

C:\xampp\mysql\bin>mysql -u root -p  fhc_test < fhc.sql

任何人都可以帮我弄清楚我的恢复脚本中有什么问题吗? bcos我做了很多检查,看起来代码没有错误。我是否必须从c:/ xampp / mysql / bin复制mysql.exe文件并将其放入我放置php文件的同一文件夹中?

我真的不知道我与此有什么关系。

2 个答案:

答案 0 :(得分:0)

鉴于你使用:

C:\xampp\mysql\bin>mysql -u root -p  fhc_test < fhc.sql

它是您正在尝试的用户root。不是phpmyadmin用户。因此,您需要使用-p选项为root提供密码。

答案 1 :(得分:0)

在PowerShell中运行命令,您将收到此错误:

The '<' operator is reserved for future use.

您显然是在Windows中运行此程序,因此需要将语法调整为此:

Get-Content fhc.sql | mysql -u root -p  fhc_test