【问题标题】:Restore a mysql database backup?恢复一个mysql数据库备份?
【发布时间】:2012-02-04 16:12:06
【问题描述】:

我正在使用这个命令来备份一个 MySql 数据库:

public function backup() {
    $backup = $this->location.'/'.$this->database.'_backup_'.date('Y').'_'.date('m').'_'.date('d').'.sql';
    $cmd = "c:/xampp/mysql/bin/mysqldump --opt -h localhost -u root $this->database > $backup";
    try {
        system($cmd);
        $error              = false;
        $message['error']   = false;
        $message['message'] = 'Backup successfuly complete';
        return json_encode($message);
    } catch(PDOException $e) {

        $error              = true;
        $message['error']   = true;
        $message['message'] = $e->getMessage();;
        return json_encode($message);
    } 
}

以上工作正常,数据库备份没有任何问题。这是恢复备份的命令:

public function restore($backup) {
    $cmd = "c:/xampp/mysql/bin/mysql -h localhost -u root $this->database > $backup";
    try {
        exec($cmd);
        $error              = false;
        $message['error']   = false;
        $message['message'] = 'Restore successfuly complete';
        return json_encode($message);
    } catch(PDOException $e) {

        $error              = true;
        $message['error']   = true;
        $message['message'] = $e->getMessage();;
        return json_encode($message);
    } 
}

上述函数的问题是,当我执行它时,数据库没有恢复,而是.sql文件,其中备份了数据库表,它被清空了。发生了什么?

【问题讨论】:

    标签: php mysql restore


    【解决方案1】:

    将大于号切换为小于号。现在,在您的恢复工作中,您让数据库再次写入文件;现在它已被清空,它正在清除文件。

    mysql -h localhost -u root $this->database < $backup.sql
                                               ^
    

    一般&gt;表示写,&lt;表示读。

    【讨论】:

      【解决方案2】:

      您必须更改恢复命令行,将&gt; 替换为&lt;

      $cmd = "c:/xampp/mysql/bin/mysql -h localhost -u root $this->database < $backup";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多