大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

安装Navicat

1
程序压缩包打开后,双击"navicat_trial_...";如图1
进行安装;
安装完成后,先不要打开;
2
程序压缩包打开后,双击"PatchNavicat",如图2
右键点击"navicat",运行/打开;如图3
此时就打开文件了,不用输入注册码即可使用;
3

4
文件--新建连接--选择MySQL/Mariadb--自定义连接名;输入服务器IP;root密码,如图5
或者
直接点击"连接"--选择MySQL/Mariadb--输入服务器IP,如图6


5

6
7
1.导出数据库:
打开Navicat ,在我们要导出的数据库上右击鼠标,
然后弹出的快捷菜单上点击“转储SQL 文件”,在再次弹出的子菜单项中选择第一个“数据跟结构”。

8
2.导入数据库:
命令行导入:不同的版本数据库,可能报错,一一解决即可;如图9
navicat导入:工具--数据传输--源和目标的服务器和数据库选定--点击"全选"--"开始";如图10(MySQL版本不一致,不建议使用)
或者
navicat导入:点击目标数据库--右键查看数据库属性--比对一下是否和源数据数据库属性一致--不一致,修改即可;
然后右键目标数据库--运行sql文件--如图11--选择要导入的sql文件--去掉"SET AUTOCOMMIT=0"的对勾--点击开始;

导入数据报错,如图9,解决办法:
my.cnf里面的配置增加一条:
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

重启服务,继续导入文件,不会报错了

9
10

11
其他错误:navicat(待测试--熟悉即可)

1.报错:MySQL server has gone away,然后就熄火了,
主要原因就是:sql操作的时间过长;只需要在mysql配置文件末尾添加这些值,问题就能迎刃而解:
max_allowed_packet=500M
wait_timeout=288000
interactive_timeout = 288000

2.数据传输时,报错
[Err] [Dtf] 1197 - Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mysqld variable and try again With statement: INSERT INTO `rc_comment` VALUES (...)
[Err] [Dtf] Finished - Unsuccessfully
解决办法:
修改my.cnf,增大binlog_cache_size和max_binlog_cache_size参数的值
binlog_cache_size = 20M 能够使用的最大cache内存大小
max_binlog_cache_size = 100M
我的解决办法:导入sql文件的方法,不用数据传输的方法

3.当执行多语句事务时,max_binlog_cache_size如果不够大,系统可能会报出
"Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage"错误。
备注:以load data 来说,如果load的文件大小为512M,在执行load 的过程中,
所有产生的binlog会先写入binlog_cache_size,直到load data 的操作结束后,
最后,再由binlog_cache_size 写入二进制日志,如mysql-bin.0000008等。
所以此参数的大小必须大于所要load 的文件的大小,或者当前所要进行的事务操作的大小。
改大max_binlog_cache_size 和binlog_cache_size  问题解决
SET GLOBAL max_binlog_cache_size =20971520;
SET GLOBAL binlog_cache_size =20971520;

待测试:
服务器的数据库迁移到新数据库服务器上,用navicat的数据传输功能来传
遇到报错信息:Invalid default value for 'tmptime'
原服务器数据库 mariadb x.x
新数据库服务器 mysql 5.7
报错原因:mysql 5.7有严格的数据校验,MySQL 5.6以后timestamp设定默认值规则改变,时间字段不允许再设置”0000 00-00 00:00:00”这样的默认值。
解决方法:
查看sql_mode:
mysql> show session variables like '%sql_mode%';

| Variable_name | Value                                                                               
-----------------------------------------------------+
| sql_mode      | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+--------------------------------------------------------------------------------------
修改sql_mode,去掉NO_ZERO_IN_DATE,NO_ZERO_DATE:
mysql> set sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
然后重新做数据传输就OK咯!