使用mysqldump导出数据库sql文件:
mysqldump -uroot -p db1 > db1.sql
在Navicat中运行SQL导入该sql文件,遇到了Got a packet bigger than 'max_allowed_packet' bytes 的错误,如图:

即使几次调整max_allowed_packet大小,依然很难满足数据导入的大小需求,索性不在max_allowed_packet上面做文章。
检查导出的sql文件,发现因为个别数据库表数据量过大,而默认的mysqldump导出,每个数据库表的INSERT INTO语句是统一写成一个,如下,而不是一行数据对应一个INSERT INTO语句
INSERT INTO table VALUES (1),(2),(3),(4),...;
这里引入 -skip-extended-insert 属性,给每条数据对应生成一条INSERT INTO语句,重写mysqldump导出数据库:
mysqldump -uroot -p --skip-extended-insert db1 > db1.sql
重新导入,问题解决。
文章讲述了在使用mysqldump导出数据库时遇到大表导致的max_allowed_packet错误。作者通过调整mysqldump参数--skip-extended-insert,将每个INSERTINTO语句分开,成功解决了导入问题。
5126





