com.mysql.jdbc.PacketTooBigException: Packet for query is too large (2280 > 2048).異常的解決方法


今天碰到了一個如上的異常,在執行一個查詢功能時后台會報錯,沒有返回查詢結果。

一般是Linux服務器的mysql的配置文件出現問題(同樣的數據在本地不報錯),mysql重啟時可能會重置配置文件導致,或者被人惡意修改。

我的報錯如下:

嚴重: Servlet.service() for servlet [dispatcherServlet] in context with path [/******] threw exception [Request processing failed; nested exception is org.hibernate.exception.GenericJDBCException: could not extract ResultSet] with root cause
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (2280 > 2048). You can change this value on the server by setting the max_allowed_packet' variable.

網上查了一些方法,主要問題就是max_allowed_packet 參數不符合要求,總結如下

找到my.cnf配置文件,Linux下輸入命令  mysql --help | grep my.cnf 

 

如下顯示了幾個路徑,但是可能有些路徑是沒有文件的,一般是默認在第一個 /etc/my.cnf(總之找到這個文件就可以)

也有可能沒有該配置文件,就可以在etc下新建一個my.cnf文件

找到配置文件后在最后加一列   max_allowed_packet=32M

重啟mysql服務  service mysqld restart 

下面是我的配置文件:

 

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
lower_case_table_names=1
max_allowed_packet=100M

symbolic-links=0


sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
max_allowed_packet=32M

以上僅供參考

以后再遇到此類問題可以直接查看my.cnf配置是否被修改


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM