在哪里可以找到"mysqldump"退出代码列表?

Mis*_*hko 12 mysqldump exit-code

我知道这exit code = 0意味着No error.

我有exit code = 2.这是什么意思 ?

我在哪里可以看到mysqldump退出代码的完整列表?

小智 36

取自MySQL 5.1.59中的client/mysqldump.c:

#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
Run Code Online (Sandbox Code Playgroud)

浏览源代码,EX_MYSQLERR似乎主要用于来自服务器的错误,但万一malloc失败.CONSCHECK似乎代表一致性检查.对于一些_alloc调用也会返回EX_EOM - "End Of Memory"?


fbi*_*ich 10

当由于特权问题而无法完成转储时,通常会发生退出代码2; 例如,如果用户没有该LOCK TABLES权限,或者提供的密码错误.


小智 5

值得注意的是,如果您mysqldump在 php 函数中使用execshell_exec或者system作为命令使用,如果您没有将文件写入所选位置的权限,它将返回 02 退出代码。

在我的例子中命令:

mysqldump '-uUSER' '-pPASS' DATABASE > /home/USER/LOCATION/dump.sql
Run Code Online (Sandbox Code Playgroud)

当从 php 调用时不起作用。向 LOCATION 文件夹添加适当的写入权限后解决了这个问题。

我通过检查调用命令时作为输出发送的内容解决了这个问题:

myslqdump
Run Code Online (Sandbox Code Playgroud)

以及之后:

mysqldump '-uUSER' '-pPASS' DATABASE
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,命令都在函数的第二个参数中给出了正确的响应exec