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

时间:2010-10-02 13:51:36

标签: mysqldump exit-code

我知道exit code = 0表示No error

我得到了exit code = 2。这是什么意思 ?

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

4 个答案:

答案 0 :(得分:34)

取自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

浏览源代码时,EX_MYSQLERR似乎主要用于来自服务器的错误,但是在malloc失败的情况下也是如此。 CONSCHECK似乎代表一致性检查。某些_alloc调用也会返回EX_EOM - “End Of Memory”?

答案 1 :(得分:9)

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

答案 2 :(得分:2)

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

在我的情况下命令:

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

从php调用时无法正常工作。在向LOCATION文件夹添加适当的写入权限后解决了这个问题。

我通过检查调用命令时发送的内容来解决它:

myslqdump

之后:

mysqldump '-uUSER' '-pPASS' DATABASE

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

答案 3 :(得分:0)

另一个原因可能是具有太特殊字符的密码,这些字符在控制台上未使用(因为您使用mysqldump)。该过程也返回错误代码2。我不时有这个问题。至少在引号/双引号中包装参数通常有助于:-u... -p...等等,使用"-u..." "-p..."可以消除许多问题。但是,它不是一个完美的解决方案(如果使用相同类型的引号)。

它也可能是操作系统相关的问题。例如,MS Windows使用变量,例如%MYVAR%似乎根本无法转义(至少某些来源,例如PHP docu提到这一点)。