Где я могу найти список кодов выхода "mysqldump"?

Я знаю, что exit code = 0 означает No error.

Я получил exit code = 2. Что это значит?

Где я могу увидеть полный список кодов выхода mysqldump?

Ответ 2

Взято из client/mysqldump.c в MySQL 5.1.59:

#define EX_USAGE 1
#define EX_MYSQLERR 2
#define EX_CONSCHECK 3
#define EX_EOM 4
#define EX_EOF 5 /* ferror for output file was got */
#define EX_ILLEGAL_TABLE 6

Сбой через источник, EX_MYSQLERR, по-видимому, используется в основном для ошибок с сервера, но также и в случае сбоя malloc. Кажется, что CONSCHECK поддерживает проверку целостности. EX_EOM возвращается для некоторых вызовов _alloc тоже - "Конец памяти"?

Ответ 3

Код выхода 2 часто возникает, когда дамп не может быть завершен из-за проблем с привилегиями; например, если пользователь не имеет привилегии LOCK TABLES, или пароль, предоставленный вами, был неправильным.

Ответ 4

Стоит отметить, что если вы используете mysqldump в php-функции exec, shell_exec или system как команду, он вернет код выхода 02, если у вас нет прав на запись файла в выбранное место.

В моем случае команда:

mysqldump '-uUSER' '-pPASS' DATABASE > /home/USER/LOCATION/dump.sql

При вызове php не работает. Он был решен после добавления правильных разрешений на запись в папку LOCATION.

Я решил это, проверив, что было отправлено как результат при вызове команды:

myslqdump

и после него:

mysqldump '-uUSER' '-pPASS' DATABASE

В обоих случаях команда дала правильный ответ во втором аргументе функции exec.

Ответ 5

Другой причиной может быть пароль со слишком особыми символами, который использовался на консоли без использования (поскольку вы используете mysqldump). Процесс также возвращает код ошибки 2. У меня есть эта проблема время от времени. Параметр обертки, по крайней мере, в кавычках/двойных кавычках помогает часто: вместо -u... -p... и т.д. Использование "-u..." "-p..." устраняет многие проблемы. Однако это не идеальное решение (если используется тот же тип кавычек).

Он также может быть проблемой, зависящей от ОС. Например, в MS Windows используются переменные, например %MYVAR%, которые, похоже, вообще не могут быть экранированы (по крайней мере некоторые источники, такие как PHP document упоминает это).