“在查询期间失去与 MySQL 服务器的连接”错误

Ala*_*laa 5 mysql mysql-5.5

我有 MySQL 5.5.20 和这个表:

mysql> desc 国家;
+----------------+-------------+------+-----+----- ----+-----+
| 领域 | 类型 | 空 | 钥匙 | 默认 | 额外 |
+----------------+-------------+------+-----+----- ----+-----+
| 身份证 | 整数(255) | 否 | PRI | 空 | |
| 异 varchar(2) | 否 | | 空 | |
| 姓名 | varchar(80) | 否 | | 空 | |
| printable_name | varchar(80) | 否 | | 空 | |
| iso3 | varchar(3) | 是 | | 空 | |
| 编号 | smallint(6) | 是 | | 空 | |
+----------------+-------------+------+-----+----- ----+-----+

如果我运行这样的查询

SELECT country.ID, country.ISO, country.NAME,
       country.PRINTABLE_NAME, country.ISO3, country.NUMCODE
FROM country;
Run Code Online (Sandbox Code Playgroud)

它返回:

ERROR 2013 (HY000): 在查询过程中失去与 MySQL 服务器的连接

如果我像这样更改列的顺序(例如,在 PRINTABLE_NAME 之前的 ISO3):

SELECT country.ID, country.ISO, country.NAME,
       country.PRINTABLE_NAME,  country.NUMCODE, country.ISO3
FROM country;
Run Code Online (Sandbox Code Playgroud)

它工作正常!

或者,如果我使用列的小写字母重写查询,它也能正常工作。

这个问题不时出现(大约一个月一次),解决它的唯一方法是重新启动 MySQL!我已经检查了错误日志,但在此错误时没有在错误日志中添加任何内容!!我真的很困惑,不知道为什么会这样!关于如何解决这个问题的任何想法?

Jan*_*Jan 1

我在 Windows 上运行 MySQL 5.7.26,当从 MySQL 命令行客户端执行简单查询时,我得到了与您描述的相同的错误。我发现只有当查询长度正好是 64 个字符时才会出现这种情况!只需添加一个空格就可以解决我的问题。
无论是选择查询还是插入/删除/更新查询都没关系。
我已经在我的服务器上运行了 66.000 个查询,只有 64 个字符的查询失败了。
我检查了数据库是否损坏。但在该服务器上创建新的数据库和表时,我也可以重现同样的问题。
我只能在该生产服务器上重现这个问题。我创建了一个具有与 VMWare 计算机完全相同的版本和完全相同的设置的新服务器,但无法重新创建。使用相同的 MySQL 客户端。