由于navicat备份数据有些表结构会不一致,所以使用mysql自带dump工具。
mysqldump -uroot -p cc>D:\cc.sql
导入需要注意的问题:
一定要检查一下dump出来的sql有没有create database ...
use database 这样的语句。可能这个库是你真在使用的库,会被覆盖掉。
导入可能出现的问题:
1.mysql在导入的时候显示Unknown command '\''错误,
这个有些时候是由于导出端和导入端的字符集不同导致的。
解决方案:在导出的时候添加和默认字符集.
导出的时候设置字符集
mysqldump -uroot -p dbname --default-character-set=utf8mb4> D:\db.sql
2.[ERR] 1231 - Variable 'time_zone' can't be set to the value of 'NULL'
文件中头部和尾部可能有这样的注释,删掉试试。如果不行,就把头尾注释都删掉。
3.dump后的sql过大执行可能会出现问题,MySQL server has gone away
在我们使用mysql导入大文件sql时可能会报MySQL server has gone away错误,该问题是max_allowed_packet配置的默认值设置太小,只需要相应调大该项的值之后再次导入便能成功。该项的作用是限制mysql服务端接收到的包的大小,因此如果导入的文件过大则可能会超过该项设置的值从而导致导入不成功!下面我们来看一下如何查看以及设置该项的值。
查看 max_allowed_packet 的值
show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+
可以看到默认情况下该项的大小只有4M,接下来将该值设置成150M(1024*1024*150)
set global max_allowed_packet=157286400;
如果设置后查看值没有生效,可以修改my.ini文件,我的这个文件是在D盘下,D:\ProgramData\MySQL\MySQL Server Data;修改完成之后重启mysql服务即可。
4.也可能遇到MySQL 2006-MySQLserver has gone away
找到 安装目录下的my.ini配置文件,加入以下代码:
max_allowed_packet=500M
wait_timeout=288000
interactive_timeout = 288000
三个参数注释如下:
max_allowed_packet是mysql允许最大的数据包,也就是你发送的请求;
wait_timeout是等待的最长时间,这个值大家可以自定义,但如果时间太短的话,超时后就会现了MySQL server has gone away #2006错误。
max_allowed_packet参数的作用是,用来控制其通信缓冲区的最大长度