当您物理上断开客户端的连接时,您不会发送正常的断开连接(这会导致回滚),并且MysqL协议不是很健谈,因此服务器永远不会知道客户端不在那里。与客户端和服务器内部进行更多对话的其他数据库系统相比,我认为这是协议中的缺陷。
无论如何。您可以更改两个变量。他们基本上是相同的,只是针对不同的客户。
第一个是wait_timeout,它由Java或PHP之类的应用程序客户端使用。
另一个是interactive_timeout,它由MysqL客户端使用(如您的测试中)
在这两种情况下,服务器都会在几秒钟后终止连接,并且这样做会回滚所有事务并释放所有锁。