MySQL:错误1153(08S01):得到的数据包大于“ max_allowed_packet”字节

从转储文件中进行非常大的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_pa​​cket大小
通过查询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服务器以应用这些设置。

你可能感兴趣的:(mysql,mysql,数据库)