1.不导出系统数据库,以免在导入的时候出现错误:
ERROR 1726 (HY000) at line 17288: Storage engine 'InnoDB' does not support system tables. [mysql.columns_priv]
【解决办法】:
mysql -h127.0.0.1 -uroot -P3307 -p123asd -e "show databases;" | grep -Ev "Database|information_schema|mysql|sys|performance_schema"|xargs mysqldump -h127.0.0.1 -uroot -P3307 -p123asd --force -x --databases>dump.sql
其中: --force -x 是为了防止无权限视图以及其他错误。
- 将dump文件导入的时候出现错误:
ERROR 1153 (08S01) at line 7250: Got a packet bigger than 'max_allowed_packet' bytes
这是因为有的sql中导出了太长的mediumtext字段,超过了max_allowed_packet定义的最大值。
mysql中一个packet的定义为:
客户端发送到mysql 服务端的单个SQL 语句
或者
服务端发送到客户端的单行数据
或者
master发往slave的一个binary log event。
【解决办法】
增加max_allowed_packet的配置
- 可以修改配置文件:
[mysqld]
max_allowed_packet=100M
不过这种方法要重启才能生效。
- 可以修改全局参数,注意要写成10010241024,而不能写100M
set global max_allowed_packet = 100 * 1024 * 1024;
不过这种方法立即对当前启动的mysql生效。当mysql重启以后又会恢复到默认配置。
以上两种情况根据自身需要配置。比我的环境中不能随便重启mysql,而我又要临时导入数据,就选择方法二。
修改以后可以用两种方式查看:
show variables like '%max_allowed_packet%';
select @@max_allowed_packet;