mysqldump导入导出遇到的问题

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 是为了防止无权限视图以及其他错误。

  1. 将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;

你可能感兴趣的:(mysqldump导入导出遇到的问题)