【问题标题】:command restore mysql db backup in php命令在php中恢复mysql db备份
【发布时间】:2013-10-12 07:00:24
【问题描述】:

我在恢复 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");
?>

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

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

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

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

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

我真的不知道我和这个有什么关系。

【问题讨论】:

  • 是不是你mysql命令行的-p后面有个空格?
  • @Cwissy 不,这是因为我的 phpmyadmin 没有密码,所以不需要 -p

标签: php mysql mysqldump restore


【解决方案1】:

鉴于您使用:

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

这是您尝试使用的用户 root。不是 phpmyadmin 用户。所以你需要使用-p 选项来提供root 的密码。

【讨论】:

    【解决方案2】:

    在PowerShell中运行命令,你会得到这个错误:

    The '<' operator is reserved for future use.
    

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-23
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      相关资源
      最近更新 更多