MySQL Case-max_allowed_packet過小是否會擷取sql文字

哎呀我的天吶發表於2022-01-05

問題描述

insert into t1 values('aa','bb','cc;cc','dd');

單條語句指令碼source執行成功。但是如果幾百萬條資料,在source的時候卻執行到一段資料庫後就會出現報錯:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your  server version for the right syntax to use near cc,dd at line 1.

如果你是,這個問題你的第一思路是什麼?和max_allowed_packet有關?我的判斷是語意語法這關還沒過,肯定是SQL檔案有問題,而有的朋友判斷是和max_allowed_packet設定過小有關,那麼我們帶著這樣的疑問來測試下吧!!

mysql> set global max_allowed_packet = 2;
Query OK, 0 rows affected, 2 warnings (0.06 sec)

退出,編寫一個大的sql文字執行,可以看到報如下錯誤

那麼答案已經有了,根據SQL的執行順序,首先是要校驗語意語法的,這只是一段硬程式碼的校驗,還涉及不到server層,

這個問題比較簡單,首先你要對SQL執行順序非常瞭解!

這個問題的排查思路

檢查SQL文字,看是否有特殊字元,中文分號等等。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-2850813/,如需轉載,請註明出處,否則將追究法律責任。

相關文章