将非常大的插入插入mysql,max_packet_size

时间:2012-08-03 16:02:39

标签: mysql

我们正在尝试安装海牛软件,我们收到了这个错误。

mysql -u manatee cgspu -p --max_allowed_packet=4096M < to-insert.sql
Warning: option 'max_allowed_packet': unsigned value 4294967296 adjusted to 2147483648
Enter password: 
ERROR 1153 (08S01) at line 1: Got a packet bigger than 'max_allowed_packet' bytes

Mysql确实设置了max_allowed_pa​​ckets,我们检查了mysql --help 显示

max_allowed_packet                2147483648

有没有办法绕过这个?我不得不从makefile中的初始数据库填充中删除该单行,甚至让它安装软件。

现在我在数据库外面留了一行,无法插入它。

1 个答案:

答案 0 :(得分:3)

修改

您可能需要在服务器上设置max_allowed_packet

试试这个:

(echo 'SET GLOBAL max_allowed_packet=1073741824;' ; cat to-insert.sql) |
mysql -u manatee cgspu -p --max_allowed_packet=1073741824

并查看是否可以解决您的问题。

to-insert.sql是否包含大于2G的单个SQL语句?

或者它是否包含多行INSERT

INSERT INTO example VALUES 
(1),(2),(3), ....

如果是,请将这些语句重写为单独的INSERT语句:

INSERT INTO example VALUES (1);
INSERT INTO example VALUES (2);
INSERT INTO example VALUES (3);

如果您使用to-insert.sql创建了mysqldump,请尝试使用以下命令重新导出记录:

mysqldump --skip-extended-insert ...