我有一个tomcat应用程序连接到MySQL Db / java应用程序
我一直在
用于查询的数据包太大1080> 1024
我尝试更改my.cnf: 在my.cnf中,Max包大小定义为50 MB和
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
lower_case_table_names = 1
skip-external-locking
bind-address = 0.0.0.0
key_buffer = 16M
max_allowed_packet = 50M
thread_stack = 192K
thread_cache_size = 8
group_concat_max_len=100000
innodb_lock_wait_timeout=300
innodb_buffer_pool_size=22G
innodb_locks_unsafe_for_binlog = ON
innodb_additional_mem_pool_size=40M
我甚至尝试将Param作为连接字符串的一部分传递
jdbc:mysql://serverIP:3306/dbname?maxAllowedPacket=2048000
到jdbc驱动程序 - 我仍然继续
用于查询的数据包太大1080> 1024
每隔几个小时就会发生这种情况。
我应该检查什么?
MySQL版本是5.5
感谢您的帮助。
答案 0 :(得分:1)
看起来没有正确配置的东西......在配置更改后你重启了MySQL吗?您必须在两端配置大小:
客户端和服务器都有自己的max_allowed_packet变量,因此如果要处理大数据包,则必须在客户端和服务器中增加此变量。
但是,服务器的默认大小为1mb(1024 kb)。鉴于您的错误1080>1024
我猜测您的配置更改没有发生(至少在客户端和服务器上都没有)。
这是因为查询,行或二进制日志事件大于1mb:
通信数据包是发送到MySQL服务器的单个SQL语句,发送到客户端的单个行,或从主复制服务器发送到从属服务器的二进制日志事件。
我尝试在客户端和服务器(包括你的复制实例,如果有的话)上碰到5mb。您必须退回MySQL才能使更改生效。
https://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html
答案 1 :(得分:1)
对于那些只想增加max_allowed_packet
的大小而又不想永久保留此更改的人,请尝试执行sql:
use your_db;
set global max_allowed_packet = 1024*1024*10; # set size to 10M
要验证其是否生效,您需要打开一个新的查询会话并执行:
show VARIABLES like '%max_allowed_packet%';
请注意,此更改是临时性的,并在mysql重新启动时恢复为默认值。