大家好,又见面了,我是你们的朋友全栈君。
从转储文件中进行非常大的MySQL导入时,我遇到了此错误。
$ mysql dbname < /tmp/dump.sql
ERROR 1153 (08S01) at line 9424: Got a packet bigger than ‘max_allowed_packet’ bytes
这是我用来解决此问题的步骤。
允许客户端中的大数据包
在将mysql命令作为参数运行时,可以更改允许的最大数据包大小。这增加了客户端将发送到服务器的最大数据包数。
$ mysql –max_allowed_packet=100M dbname < /tmp/dump.sql
这是第一部分,它涵盖了您的客户端操作。
允许服务器上的大数据包
现在,服务器还需要接受更大的数据包。通常有两种方法可以做到这一点。
获取当前的max_allowed_packet大小
通过查询MySQL服务器上的变量,可以看到当前配置的最大数据包大小是多少。为此,请以root特权登录到您的MySQL Shell 。
$ mysql -uroot
mysql> SELECT @@max_allowed_packet;
±———————+
| @@max_allowed_packet |
±———————+
| 16777216 |
±———————+
1 row in set (0.00 sec)
要获得易于阅读的版本(以MB为单位),请尝试以下操作:
mysql> SELECT @@max_allowed_packet / 1024 / 1024;
±———————————–+
| @@max_allowed_packet / 1024 / 1024 |
±———————————–+
| 16.00000000 |
±———————————–+
1 row in set (0.01 sec)
默认值为16MB或16777216字节。
暂时增加封包大小
您可以为正在运行的MySQL实例临时更改此maxallowed数据包参数。为此,请以root用户身份登录MySQL服务并运行以下命令:
$ mysql -uroot
mysql> SET GLOBAL net_buffer_length=1000000;
mysql> SET GLOBAL max_allowed_packet=1000000000;
这将允许的最大数据包设置为1000000000或100MB。
如果您随时重新启动MySQL服务,则设置将恢复为默认设置或您的中配置的任何设置my.cnf。
永久增加my.cnf中的数据包大小
要在MySQL服务器重新启动时设置所需的值,您需要更新my.cnf配置文件。
编辑文件/etc/mysql/my.cnf(或无论您身在何处my.cnf)并查找该[mysqld]部分。
[mysqld]
…
There might be other config parameters in here
…
max_allowed_packet = 100M
更改配置后,请重新启动MySQL服务器以应用这些设置。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105796.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...