[org.hibernate.engine.jdbc.spi.SqlExceptionHelper]-[WARN] SQL Error: 0, SQLState: S1000
[org.hibernate.engine.jdbc.spi.SqlExceptionHelper]-[ERROR] Packet for query is too large (1641 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
org.hibernate.exception.GenericJDBCException: could not extract ResultSet
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:89)

在windows下进行修改

  • 在windows下C:\ProgramData\MySQL\MySQL Server 5.5\my.ini找到my.ini文件,如果看不到此文件可使用搜索功能进行查找选中上述文件夹中的文件进行修改
  • 命令行进入mysql 执行show variables like ‘%max_allowed_packet% 默认值为1M
  • +——————–+———+
    | Variable_name | Value |
    +——————–+———+
    | max_allowed_packet | 1048576 |
    +——————–+———+
  • 把 max_allowed_packet=16M,加到此文件中[mysqld]后,重启mysql
  • 命令行进入mysql后通过命令show variables like ‘%max_allowed_packet%’;查看是否生效。
  • mysql> show variables like ‘%max_allowed_packet%’; 执行后发现值变化为修改成功
    +————————–+————+
    | Variable_name | Value |
    +————————–+————+
    | max_allowed_packet | 16777216 |
    | slave_max_allowed_packet | 1073741824 |
    +————————–+————+

在linux下进行修改

  • 可以编辑my.cnf来修改,在[mysqld]段或者mysql的server配置段进行修改,max_allowed_packet = 20M
    如果找不到my.cnf可以通过,mysql –help | grep my.cnf去寻找my.cnf文件,修改过后重启mysql,通过命令查看是否成功

  • 错误原因解析:MySQL根据配置文件会限制server接受的数据包大小,有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败,通过设置参数可以解决此问题

Logo

更多推荐