mysql 导入大数据的时候,经常会碰到Row size too large 或者[Err] 2006 – MySQL Server Has Gone Away,这样的错误提示。
如下操作可以解决。
确认 Mysql 默认引擎为 InnoDB:
MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表注重性能,其执行速度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外键等高级数据库功能。
show engines
如果不是,修改默认引擎:
在配置文件中的 [mysqld] 下面加入default-storage-engine=INNODB,然后重启服务器。
修改max_allowed_packet变量参数
此参数指mysql服务器端和客户端在一次传送数据包的过程当中,最大允许的数据包大小。
使用navicat, 依次点击“工具”->”服务器监控”->”MySQL”,打开服务器监控界面,选中连接的服务器,在“变量”标签中找到 max_allowed_packet,根据实际情况调大该值。
修改服务器端导入文件大小的限制,修改mysql 配置文件
修改服务端的 mysql 配置文件(Windows系统是my.ini,Linux系统是my.cnf)中的 max_allowed_packet 配置项。
查询参数确认
show VARIABLES like '%max_allowed_packet%';