我有 MySQL 5.5.20 和这张表:
mysql> desc country;
+----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| id | int(255) | NO | PRI | NULL | |
| iso | varchar(2) | NO | | NULL | |
| name | varchar(80) | NO | | NULL | |
| printable_name | varchar(80) | NO | | NULL | |
| iso3 | varchar(3) | YES | | NULL | |
| numcode | smallint(6) | YES | | NULL | |
+----------------+-------------+------+-----+---------+-------+
如果我运行这样的查询
SELECT country.ID, country.ISO, country.NAME,
country.PRINTABLE_NAME, country.ISO3, country.NUMCODE
FROM country;
它返回:
ERROR 2013 (HY000): Lost connection to MySQL server during query
如果我像这样更改列的顺序(例如 PRINTABLE_NAME 之前的 ISO3):
SELECT country.ID, country.ISO, country.NAME,
country.PRINTABLE_NAME, country.NUMCODE, country.ISO3
FROM country;
它工作正常!
或者,如果我为列使用小写字母重写查询,它也可以工作。
这个问题不时出现(大约一个月一次),修复它的唯一解决方案是重新启动 MySQL!我检查了错误日志,这就是我在其中的内容:
130310 11:01:23 [Warning] /usr/sbin/mysqld: Forcing close of thread 401108 user: 'root'
我真的很困惑,不知道为什么会这样!关于如何解决这个问题的任何想法?