2011-06-23 175 views
4

我有一台服务器返回一个意外的间歇性错误,并想知道是否有人曾经体验过它,或者猜测可能发生了什么。迄今为止,我的搜索是无用的。mysql_connect在远程主机连接上返回“无法通过套接字连接到本地MySQL服务器”?

我以通常的方式使用mysql_connect()连接到远程mysql服务器,但在过去的2周(每天几次)连接到数据库失败,我无法连接到套接字错误?

Error: 2002 - Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 

显然这是意想不到的,因为我试图连接到远程主机。如果远程主机不可用,mysql_connect默认为localhost吗?我不知道这样做,并且没有任何文件说明它。

对于失败的连接,各种文件,似乎没有任何模式,它发生在各种时间。我认为它可能是网络流量相关的,因为如果你马上刷新页面,它连接好,但我很困惑,为什么林无法连接到套接字错误。

数据库提供程序已检查并无法找到服务器本身的问题。 任何人有任何想法?

+0

运行MySQL服务器的操作系统是什么?你有没有看过http://dev.mysql.com/doc/refman/5.5/en/can-not-connect-to-server.html呢? –

+0

我相信它的CENTOS,但是需要dbl检查。 我确实读过那个页面,是的,我确实对防火墙感到惊讶,因为我知道它在一个之后。 – gavtaylor

回答

3

好吧,facepalm这一刻......在这个打击了我多年后,我终于找到了为什么mysql_error()报告了套接字错误。在我的代码中有一个我没有注意到的mysql_select_db(),那是因为它没有打开连接来报告套接字错误。

mysql_connect报告的实际错误是(2003)无法连接到'mysql.hostname.tld'上的MySQL服务器。我仍然倾向于某种DNS查询/网络流量问题,我目前使用IP地址来连接,看看是否有错误。

但是就这个问题而言,答案是“Im a numpty”。

+0

OMG你只是节省了我的时间和小时! – SublymeRick

+0

总是乐于为球队带来一场:) – gavtaylor

3

我确定它并不默认为本地主机,我也很确定它是远程服务器向您发送错误消息。所以它是你的mysql服务器上的“本地”,而不是“你的”服务器上的本地。

在这种情况下,它可能是由于远程服务器的停机时间。

Gr。

+0

有趣...我会询问它是不是在Windows机器上的远程机器上的错误 – gavtaylor

0

如果您正在运行Windows,则可能有太多连接,如果是这样,请转至http://dev.mysql.com/doc/refman/5.5/en/can-not-connect-to-server.html#can-not-connect-to-server-on-windows并进行读取。

否则,也许有人可能删除了mysqld使用的Unix套接字文件(默认情况下为/tmp/mysql.sock)。例如,您可能有一个从/ tmp目录中删除旧文件的cron作业。

+0

。太多的连接是我的第一个想法,但我已经放心,这不是问题 – gavtaylor

2

过类似的事情而回。

你从家里连接吗?我问的原因是我的ISP喜欢乱搞重新分配IP地址到我的家庭帐户,并且我在远程MySQL上拥有IP授权。

我想我打开IP连接限制的东西到一个字符串是IP地址为我的地区,并解决了这个问题。

+0

没有从网络服务器连接,其IP不会改变 – gavtaylor

相关问题