我遇到了两个虚拟机之间发生的奇怪的 mysql 行为。
当我的查询字符串长度超过 1457 个字符时,我使用的连接就会挂起。
我原本以为问题出在查询结果过多,但后来发现查询字符串并不重要。
例如:
select * from users where uname = "abcdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffpooooooooooppppppppfooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooffffffseroieeeeuuwwwwwwwwwwwuii";
使服务器挂起。
如果我从该字符串中删除一个字符,mysql 将返回一个空的记录集,正如预期的那样。没有这样的用户,并且字段 uname 是 varchar(64)。该表仅包含一条记录。
我尝试监视套接字,发现查询字符串被重新传输了 20 次,然后流量停止,但客户端没有退出,连接也没有断开/关闭。cd
192.168.0.111:43012 -> 192.168.0.112:mysql
...
bytes_sent:22614
bytes_retrans:20260
bytes_acked:329
bytes_received:8208
segs_out:28
segs_in:10
data_segs_out:18
data_segs_in:8
...
从不同实例对同一服务器进行的相同查询运行正常。我尝试了官方 mysql 终端客户端、替代终端客户端和脚本,但得到了相同的结果。