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

Posted

技术标签:

【中文标题】在哪里可以找到“mysqldump”退出代码列表?【英文标题】:Where I can find a list of "mysqldump" exit codes? 【发布时间】:2010-10-02 13:51:36 【问题描述】:

我知道exit code = 0 表示No error

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

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

【问题讨论】:

【参考方案1】:

取自 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 - “内存结束”?

【讨论】:

【参考方案2】:

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

【讨论】:

这是我尝试转储远程数据库时遇到的问题之一,但我还必须解决另一个Skipping dump data for table。无论如何 +1!【参考方案3】:

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

在我的例子中命令:

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

从 php 调用时不起作用。为 LOCATION 文件夹添加适当的写入权限后解决。

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

myslqdump

之后:

mysqldump '-uUSER' '-pPASS' DATABASE

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

谢谢 - 密码太特殊是我的问题,尽管引号没有帮助。我只是简化了密码,现在一切正常。

以上是关于在哪里可以找到“mysqldump”退出代码列表?的主要内容,如果未能解决你的问题,请参考以下文章

mysqldump 文件在哪里?

iOS:在哪里可以找到 iOS 的 OSStatus 代码的完整列表? [复制]

在哪里可以找到 JSHint 数字错误代码列表?

在哪里可以找到 Microsoft Paradox ODBC 驱动程序错误代码列表?

Windows 应用程序的退出代码列表

在哪里可以找到 Mac 虚拟键码列表?