Восстановить резервную копию базы данных mysql?

Я использую эту команду для резервного копирования базы данных 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-файл, в котором создаются резервные копии таблиц базы данных, очищается. Что происходит?

2 ответа

Решение

Переключите знак больше чем на меньше. Прямо сейчас в вашем задании восстановления вы снова записываете базу данных в файл; теперь, когда он очищен, он очищает файл.

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

В общем-то, > значит писать, < значит читай.

Вы должны изменить командную строку восстановления, заменив > с <:

$cmd = "c:/xampp/mysql/bin/mysql -h localhost -u root $this->database < $backup";
Другие вопросы по тегам