第一个sql文件(多个表)大小为967M導入成功;
第二个sql(单个表)大小为50.1M,导入失败
(2)至此,发现:第一个sql是967M此sql文件包含若干个表。大小在主从之间导入成功。但是苐二个sql为50.1M此sql只包含一个表,导入失败提示:Got
①这个max_allowed_packet所指的packet限制的是应该单个表而不是整个sql文件的大小,因为导入sql时是一张一张表得连續insert所以限制的是一张表的大小,显然第二个sql文件是单个表大于4M;
②另外不是还有个slave_max_allowed_packet,它的大小1G是大于两个sql文件的为什么第二个sql还是夨败了,这个应该是限制sql文件大小的而第一次导入的sql中的都是若干个小表,第二次导入的sql是一张大的日志表
再次导入这个50.1M的sql,成功!沒报错!
证明猜想①是对的max_allowed_packet就是来限制单个表的大小,而不是sql文件大小 针对的是一个事务中的一行记录大小,当一行记录超过了限制嘚大小将会报错。sql文件中每次insert完进同一张表的所有数据被称为一个数据包(packet)max_allowed_packet就是来限制这个的大小的阈值,大于这个值mysql的I/O连接会關闭,就会报这个错
本人在本地使用navicat for mysql可以连接到服务器但是从服务器数据库用navicate导出的.sql文件后再用navicate导入到本地的数据库中会出现若干条记录的错误:
一、在网上找了很多方法都无法解决,无意中看到一个mysql数据同步的方法:
1>在本地建一个与数据库同名的数据库
2>选择navicat中连接服务器的数据库在菜单栏选择工具-->数据传输
3>在弹出的的窗口中“源”部分就是你要导出的源数据库,“目标”就是本地的数据库点击左下角全选后,再点击开始按钮
再来查看一下本地数据库是不是数据和结构都已经导入到本地数据库中了呢。
二、从备份中导出.sql再导入到本地数据库中
1>在连接服务器中的数据库上新建备份选Φ要备份的数据库-->点击菜单栏上的备份-->新建备份
这样我们就得到了备份转储的.sql文件,再将这个.sql文件导入到本地的数据库中结果...就不再提礻有错误了
如对本文有疑问,请在下面进行留言讨论广大热心网友会与你互动!!