任务目的:把现网数据库(MySQL5.5,windows)中的内容导入到测试数据库(MySQL5.1,linux)中
1.由于对MySQL并不熟悉,一上来我先考虑方案是用现成的数据库管理工具来处理。我先后用Navicat Premium和SQLyog都失败。每次都是导出时成功,但导入时总是出现各种错误中断。
2.粗略估计失败的原因可能是
(1)版本问题,但已经排除。
(2)内容导致的,因为项目表里面不都是简单的文本数据,里面含有大量的二进制数据、视图、函数和触发器数据需要导出
(3)历史遗留乱码导致。由于该项目是又由一个老项目扩建修改而成。有些表结构在复制中存在乱码使得导入时出错
3.工具不好用所以决定用MySQL命令来处理
导出:
mysqldump.exe -uroot -proot --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x house >\x
导入
mysql>source /x
4.导入时表和数据都正常了。但是在导入自定义函数时报log_bin_trust_function_creators错误。解决方法是
set global log_bin_trust_function_creators = 1;
不过这种办法在重启后就是失效了,永久解决方案是直接修改my.ini
在[mysqld]加上log_bin_trust_function_creators=1
5.导入成功,任务完成
由于以前没操作过测试服务器,发现里面装了两个MySQL服务。直接使用mysql命令登录的并不是我要用的,所以需要先找到MySQL的mysql.sock地址
ps aux |grep mysqld
先看进程找到记下找到地址--socket=/tmp/mysql.sock
mysql -uroot -p -P3306 -S/tmp/mysql.sock
这样就登录到了需要的MySQL。问题解决。