Восстановить резервную копию базы данных mysql? - PullRequest
0 голосов
/ 04 февраля 2012

Я использую эту команду для резервного копирования базы данных 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 ]

2 голосов
/ 04 февраля 2012

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

$cmd = "c:/xampp/mysql/bin/mysql -h localhost -u root $this->database < $backup";
2 голосов
/ 04 февраля 2012

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

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

Обычно, > означает запись, < означает чтение.

...