我有一个连接到远程MySQL主机的脚本来执行一些查询。 过了一段时间,它挂起了一条消息“MySQL服务器已经消失”。 我有一个动态IP,每天至少更改3次,我意识到它在IP更改时就会挂起。
所以我更改了脚本以检测此错误,等待30 - 90秒并重新连接到服务器,但现在它挂起了重新连接尝试。
在linux和windows上都会发生这种情况。
这可能是什么原因?
编辑:我认为很明显,但更改的IP是脚本运行的本地IP,MySQL服务器是固定的IP。本地PC连接到ADSL路由器,我想我的ISP正在强制重新连接(ip更改)。 我知道在IP更改时所有现有连接都会丢失,包括MySQL,但我说我正在重新进行IP更改并且无法重新连接!答案 0 :(得分:1)
您是如何获得新IP地址的?如果您使用DNS(包括动态DNS),我的猜测是您正在使用陈旧的DNS缓存。即使TTL超过90秒的大多数动态DNS条目(以及一些中间缓存服务器也可能设置最小TTL)。
答案 1 :(得分:1)
此行为的一个原因可能是持久数据库连接。要澄清是否是这种情况,请重新启动Apache或IIS Web服务器,以防IP地址发生更改。如果重启后一切正常,你就可以了。
Persistent database connections存储在后台,如果数据库连接的主机名和用户凭据匹配,则重复使用。 mysql库有所不同:持久性mysql_pconnect和非持久性连接mysql_connect。
此外,您可以检查您的php.ini以获取 mysql.allow_persistent 的设置。