错误代码:2013查询30.002秒时与mysql服务器失去连接

inn6fuwd  于 2021-06-17  发布在  Mysql
关注(0)|答案(3)|浏览(426)

有很多问题与我的主题相同,但我的内容和问题似乎是不同的。在我的工作台上,我运行代码

`select(msgid) from `table`.log where 
 id = 'example'  and  status = 'active'  and month(created_at) = 12 
 and year(created_at) = 2018 limit 0,10;`

上面的代码运行得很好,但是当我运行代码b时

`select(msgid), count(msgid) from `table`.log where 
     id = 'example'  and  status = 'active'  and month(created_at) = 12 
     and year(created_at) = 2018 limit 0,10;`

我得到了错误

错误代码:2013。查询30.002秒时与mysql服务器失去连接
为什么这会发生在我的工作台上?
ps:workbench和mysql的新成员

ih99xse1

ih99xse11#

您可以从以下位置更改超时:
编辑→ 偏好→ sql编辑器→ dbms连接读取超时(秒):600
将其更改为比当前值更大的值。

**更新您还可以通过以下方式设置读取超时:

SET @@local.net_read_timeout=360;
pgvzfuti

pgvzfuti2#

下面是mysql workbench 8.0.13的首选项截图。我放了箭头,指示应该在哪里选择“sql编辑器”,然后在哪里找到“dbms连接读取超时间隔”字段。

我同意@salmana的评论,你应该优化你的查询,这样它就不会那么慢了。
特别是,您应该使用索引来帮助查询缩小要报告的行的范围。但是当你使用像 month(created_at) 以及 year(created_at) . 假设你有一个索引 created_at ,则需要将该列自身置于比较运算符的左侧:

... AND created_at >= '2018-12-01' AND created_at < '2019-01-01'

此查询的最佳索引是复合索引:

ALTER TABLE log ADD INDEX (id, status, created_at, msg_id);
gdx19jrr

gdx19jrr3#

您应该尝试增加dbms连接读取超时。
转到工作台编辑→ 偏好→ sql编辑器→ dbms连接读取超时:增加到6000

相关问题