簡體   English   中英

錯誤代碼:2013。查詢30.002秒期間與MySQL服務器的連接斷開

[英]Error Code: 2013. Lost connection to MySQL server during query 30.002 sec

與我的主題有很多相同的問題,但是我的內容和問題似乎有所不同。 在工作台中,我運行代碼

`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:工作台和mysql的新手

這是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);

您應該嘗試增加DBMS連接的讀取超時。

轉到工作台編輯→首選項→SQL編輯器→DBMS連接讀取超時:將其增加到6000

您可以從更改超時:

編輯→首選項→SQL編輯器→DBMS連接讀取超時(以秒為單位):600

將其更改為比當前值更大的值。

**更新您還可以通過以下方式設置讀取超時:

SET @@local.net_read_timeout=360;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM