mysql因为要传输大数据,没跑几行就报错了。报错max_allowed_packet太小了。补充提示:mysql5.7还是几之后就没有my.cnf和my.ini文件了。修改文件的方式不不用查资料了。
通信数据包是发送到MySQL服务器的单个SQL语句,发送到客户端的单个行或从主复制服务器发送到从属服务器的二进制日志事件。可以与MySQL 5.7服务器或客户端之间进行传输的最大数据包为1GB。
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_allowed_packet
如果客户端程序允许,还应该在客户端更改缓冲区的大小。max_allowed_packet客户端库中内置的默认 值为1GB,默认值为4MB。
那就改吧。
网上都是这样的教程。测试了一下。没毛病。但是很多人会遇到无效的问题。郁闷了半天。
[root@245 ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 64
Server version: 5.7.27 MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
mysql> set global max_allowed_packet = 2*1024*1024*10
-> ;
Query OK, 0 rows affected (0.05 sec)
mysql>
mysql> show VARIABLES like '%max_allowed_packet%';
+--------------------------+------------+
| Variable_name | Value |
+--------------------------+------------+
| max_allowed_packet | 4194304 |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+
2 rows in set (0.02 sec)
mysql>
到这里显示的还是老数据。没有问题。怎么办,怎么办????谷歌了半天。老外说需要退出从新连接。我用的CRT啊。直接断开,连接,还是老样式。重启mysql也不行。
这里的重新连接是要在[root@245 ~]exit 这样退出,而不是直接关闭连接,这样是不行的。
再次登录。ook。
mysql> show VARIABLES like '%max_allowed_packet%';
+--------------------------+------------+
| Variable_name | Value |
+--------------------------+------------+
| max_allowed_packet | 1073741824 |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+
2 rows in set (0.02 sec)
接下来使用 navicat for MySQL