mysqldump и wamp - PullRequest
       28

mysqldump и wamp

1 голос
/ 21 октября 2009

Обновление: Наконец-то все заработало, но я все еще не уверен, в чем проблема. Я использую сервер wamp, доступ к которому осуществляется через сетевую папку.

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

Конец обновления

Я использую сервер wamp и пытаюсь использовать mysqldump для резервного копирования базы данных mysql, которая у меня есть. Ниже приведен код PHP, который я использую для запуска mysqldump.

exec ("резервная копия mysqldump -u $ user -p $ pass> $ sql_file");

Когда я запускаю скрипт, страница просто загружается сразу, а резервная копия не создается.

Создается пустой файл, поэтому я знаю, что что-то происходит.

Дополнительная информация:

* exec() is not disabled
* PHP is not running in safe mode

Есть идеи ??

Win XP, WAMP, MYSQL 5.0.51b

Ответы [ 5 ]

1 голос
/ 18 июля 2010

Вы уверены, что $pass определено и не имеет пробела в начале?

Если это не так, mysqldump будет ожидать ввода пароля в командной строке.

1 голос
/ 21 октября 2009

mysqldump, вероятно, превысит максимальное время, которое php должен работать в вашей системе. Попробуйте использовать команду в cmd или увеличьте max_execution_time в вашем php.ini.

0 голосов
/ 22 октября 2009

Я также боролся с использованием утилиты mysqldump. Я несколько вещей, чтобы проверить / попробовать на основе моего опыта:

  • Ваш сервер настроен на запуск программ с помощью команды exec? (Сервер моего веб-хоста не пускает меня.) Тест с другой командой.

  • Установлена ​​ли утилита mysqldump? Проверьте с whereis mysqldump.

  • Попробуйте добавить аргумент оптимизации --opt

0 голосов
/ 21 октября 2009

Это может помочь посмотреть на вывод stderr из mysqldump:

$cmd = "mysqldump backup -u$user -p$pass 2>&1 > $sql_file";
exec($cmd, $output, $return);
if ($return != 0) { //0 is ok
    die('Error: ' . implode("\r\n", $output));
}   

Также вы должны использовать escapeshellarg () , если $user или $pass предоставлены пользователем.

0 голосов
/ 21 октября 2009

Некоторое время назад у меня было то же самое. Сотрудник указал мне на инструменты MySQL GUI, и я делал резервные копии с этим. Браузер запросов, который поставляется вместе с ним, тоже хорош.

MySQL GUI tools

...