Mysqldump вернуть пустой файл .sql - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь сделать дамп моего БД следующим образом:

$output = NULL; $command = 'mysqldump -u $dbuser -h localhost -p$password $dbname > dump.sql'; passthru($command, $output);

Я тоже пытался таким образом:

$command = 'mysqldump -u $dbuser -h localhost -p$password $dbname > dump.sql';
exec($command);

В обоих случаях создается пустой дамп.sql

Где я не прав?Вы можете мне помочь?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2019

Я бы предложил вам использовать флаг --single-транзакции при использовании mysqldump.

mysqldump --single-transaction -u$dbuser -hlocalhost -p$password $dbname > dump.sql

С учетом сказанного я бы заподозрил либо тайм-аут (PHP или MySQL), либо out-outошибки памяти.

Как вы выполнили свой скрипт?Браузер или CLI?

1 голос
/ 03 апреля 2019

Не могу сказать точно, но если вы используете одинарные кавычки, переменные php не будут заменены реальными значениями. Вы должны использовать двойные кавычки вместо одинарных кавычек.

Как $ command = "mysqldump -u $ dbuser -h localhost -p $ пароль $ dbname> dump.sql";

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

Дайте мне знать, если это не сработает, даст вам возможность отладить более точно.

Попробуйте с приведенным ниже, и дайте мне знать результат.

$command = "mysqldump -u $dbuser -h localhost -p$password $dbname > dump.sql 2>&1";
exec($command, $output);
echo '<pre>';print_r($output);exit;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...