gpt4 book ai didi

mysql - Unix 域套接字错误代码?

转载 作者:行者123 更新时间:2023-11-29 13:23:43 25 4
gpt4 key购买 nike

我偶尔会reviewing an unsolved mystery在我们一直运行的 Solaris 10 设置上,我注意到错误消息中的某些内容可能会提供一些线索来帮助我解开这个谜团。

该错误消息是在 UNIX 域套接字上连接到 MySQL 时出现的。

我这里有一个具体问题,是关于the error code at the end的.

查看这三个错误消息:

  • mysql -S/tmp/missing.sock 输出
    无法通过套接字“/tmp/missing.sock”连接到本地 MySQL 服务器 (2)

  • mysql -S/dev/null 输出
    无法通过套接字“/dev/null”连接到本地 MySQL 服务器 (95)

  • 我试图解决的罕见且间歇性的错误是
    无法通过套接字“/tmp/mysql.sock”连接到本地 MySQL 服务器(146)

末尾的数字:这是 UNIX 域套接字错误代码吗?如果是这样,有什么地方可以查到该代码的含义吗?

正如我所说,这是一个具体问题。其他有用的输入应发布到 the other question .

最佳答案

括号中的数字几乎可以肯定是系统错误号,通常通过errno报告,其定义可通过 #include <errno.h> 找到尽管在 Solaris 上,数字通常为 /usr/include/sys/errno.h (但也可以在其他地方,尤其是在 Linux 和 Mac OS X 上)。您可以编写一个简单的程序来查看这 3 个错误。

#include <stdio.h>
#include <string.h>

int main(void)
{
puts(strerror(2));
puts(strerror(95));
puts(strerror(146));
return 0;
}

推测:2 可能是 ENOENT,没有这样的文件或目录; 95可能是ENOTSOCK(不是套接字); 146 可能是 ENOTSUPP(不支持的操作)。

George Bailey confirms :

On my system, the answer was in /usr/include/sys/errno.h:

  • 2=ENOENT
  • 95=ENOTSOCK
  • 146=ECONNREFUSED

请注意,由于错误代码存在于第 7 版 Unix 中,因此最多二十个左右的错误号在各个系统之间往往是一致的。较高的数字出现分歧。例如,在 Mac OS X 10.9 上:

  • 2 (ENOENT):没有这样的文件或目录
  • 95(EMULTIHOP):保留
  • errno:没有 errno = 146 的消息
  • ENOTSOCK (38):非套接字上的套接字操作
  • ECONNREFUSED (61):连接被拒绝

在 SuSE 上(SLES 10 SP2 — 古董,但这些数字变化不大):

  • 2 (ENOENT):没有这样的文件或目录
  • 95 (EOPNOTSUPP):传输端点不支持操作
  • errno:没有 errno = 146 的消息
  • ENOTSOCK (88):非套接字上的套接字操作
  • ECONNREFUSED (111):连接被拒绝

这些答案是通过程序errno获得的报告错误号和名称。它必须针对每个不同的系统进行编译。

<小时/>

请注意,MySQL 为消息提供了一致的组件:

Can't connect to local MySQL server through socket '/dev/null' (95)

大致就像 printf() 的格式字符串一样声明是:

"Can't connect to local MySQL server through socket '%s' (%s)\n"

正在提供“套接字”文件的名称 - 非常有帮助 - 以及(有根据的猜测)系统错误号,这些错误号是在某个时刻从 errno 收集的。 。然而,errno是 volatile 的 - 几乎任何库函数都可以将其设置为非零值 - 因此您需要在进行错误报告工作(例如读取消息文件以获得正确的翻译)之前保留特定值(复制它)格式字符串。

关于mysql - Unix 域套接字错误代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20427264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com