восстановление базы данных MySQL с помощью PHP

#php #mysql #import #mysqldump

#php #импорт #mysql

Вопрос:

Я пытаюсь восстановить дамп MySQL, созданный следующим образом:

 $file = '/path/to/file.sql';
exec('mysqldump -u '.DB_USER.' -p'.DB_PASS.' '.DB_NAME.' > '.$file);
  

вышесказанное создает дамп, как и ожидалось, затем для восстановления я пытаюсь использовать следующее:

 $file = '/path/to/file.sql';
exec('mysql -u '.DB_USER.' -p'.DB_PASS.' '.DB_NAME.' < '.$file);
  

но по какой-то причине это ничего не делает.

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

Есть идеи, что я делаю не так?

Комментарии:

1. попробуйте полный путь к mysql, например, /usr/bin/mysql или что-то еще, и добавьте некоторую проверку ошибок при exec вызове. информация об отладке?

2. Вы протестировали строку, созданную PHP в клиентском соединении MySQL, чтобы убедиться, что она работает?

Ответ №1:

используйте mysql -e 'source $file' вместо перенаправления

Ответ №2:

 $file = realpath('file.sql');
exec('mysqldump -u ' . DB_USER . ' -p' . DB_PASS . ' ' . DB_NAME . ' > ' . $file);
  

Возможно, попробуйте это.