我正在导入一个MySQL转储,出现以下错误.

$ mysql foo < foo.sql 
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes

显然,数据库中有附件,这使得插入非常大.


这是在我的本地机器上,一台从MySQL软件包中安装了MySQL 5的Mac电脑.

我在哪里更改max_allowed_packet才能导入转储?

还有什么需要我安排的吗?

仅仅运行mysql --max_allowed_packet=32M …就产生了同样的错误.

推荐答案

您可能需要为客户端(您正在运行以执行导入)和正在运行并接受导入的守护程序mysqld更改它.

对于客户端,可以在命令行中指定:

mysql --max_allowed_packet=100M -u root -p database < dump.sql

Also, change the my.cnf or my.ini file (usually found in /etc/mysql/) under the mysqld section and set:

max_allowed_packet=100M

或者,您可以在连接到同一台服务器的MySQL控制台中运行以下commands项:

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000;

(数据包大小使用非常大的值.)

Mysql相关问答推荐

如果WHERE语句包含所有列,唯一键顺序是否重要?

用于将重复行的唯一列值作为单独列获取的SQL查询

版本升级到5.0.0后在QueryDSL中使用Enum时出错

比较2个mysql json数据类型列

Python - 执行原始 SQL 时获取更新查询 (Mysql) 的结果

Ballerina SQL 中是否也应该考虑输入清理?

在 mySQL 中计算每日数组的每周指标

mySql 查询运行速度超慢

在 Spring Data jpa 中的 @Query 中无法识别本机查询

访问 nodejs、mysql 和 json 中的嵌套对象数组

如何在更新语句中使用多个子字符串函数?

在一个 SQL 查询中对同一列中相同类型的不同值求和

查询以从约会表中获取可用空档

Over() 函数不覆盖表中的所有行

在 MySQL 中为多列创建索引以进行查询优化

SQL 查找边界之间的值

如何在不违反唯一约束的情况下交换 MySQL 中两行的值?

如何将 MySQL 5.7 更新到新的 MySQL 8.0?

#1146 - 表 'phpmyadmin.pma_recent' 不存在

MySQL错误 1005 (HY000): 无法创建表 'foo.#sql-12c_4' (errno: 150)