myqsl4.0.x版的4.1/5.x版不兼容,不能直接用把mysql的源文件复制进来的方式,解决办法有以下几种:
1.转移服务器前,先在原服务器上,在论坛后台点:系统设置>资料备份> 进行一次完整的数据备份.
转移服务器后,虽然是乱码,但仍可以登录后台,在后台系统设置>资料恢复> 用数据备份记录中的 ***.sql进行一次恢复,即可解决乱码问题.
2. 可以下载第三方软件如”帝国备份王”: 下载地址: http://www.phome.net/ebak2/
其功能有:
系统自动识别MYSQL版本格式,然后进行转换恢复。
不同编码数据库之间可直接备份与恢复。
系统支持完整备份,即使备份与恢复两个数据表结构不一致,也可备份与恢复。
下载后上传到您的空间,配置完以后即可在线备份原来的4.0版的数据库.
备份完毕后,在”参数设置”中,改为新服务器的IP及用户名和密码,
在”默认编码”处选择对应的编码类型,如GBK (mysql4.0不用选择,但mysql5.0一般需要选择!)
然后点”恢复数据”即可.
------------------------------------------------
这个命令默认使用root用户,但是有很多系统root帐号已经被删除了。就要使用参数了。具体的如下:
我不知道别人的能不能成功,总之我运行上面的命令总是报错。
the current version of MySQL
Got a failure from command:
cat /usr/local/share/mysql/mysql_fix_privilege_tables.sql | /usr/local/bin/mysql --no-defaults --force --user=root --host=localhost --database=mysql
Please check the above output and try again.
Running the script with the --verbose option may give you some information
of what went wrong.
If you get an 'Access denied' error, you should run this script again and
give the MySQL root user password as an argument with the --password= option
后来研究了一下手册,只要用下面的命令就可以轻松搞定。还让我浪费2小时。希望大家以后不会犯我同样的错误了。
-------------------------------------------------------
数据库是MYSQL5.1的,进了网站的phpmyadmin管理后发现表内中文全部显示乱码,导出后本地导入一样是乱码,无法查看所需要的信息,乱码一般情况不用说都知道多数是编码的问题,查看了下目标库的编码为latin1,估计网站程序是GBK的。。。直接备份下载,下载到本地需要转换下编码,可惜以前没搞过,网上搜索了一堆资料测试。。。具体有这几种我给需要的朋友总结下,就不用到处搜索了
一:
1、备份数据库
mysqldump --default-character-set=latin1 --create-options=false --set-charset=false -u root -p 数据库名称 > E:\back.sql
2、创建新数据库
CREATE DATABASE 数据库名称 CHARACTER SET utf8 COLLATE utf8_general_ci;
3、导入数据
mysql -u root -p --default-character-set=gbk 数据库名称 < E:\back.sql
二:
步骤一 命令行执行:mysqldump --opt -hlocalhost -uroot -p*** --default-character-set=lantin1 dbname > /usr/local/dbname.sql
步骤二 将 dbname.sql文件中的create table语句的CHARSET=latin1改为CHARSET=utf8
步骤三 在dbname.sql文件中的insert语句之前加一条'set names utf8;'
步骤四 将dbname.sql转码为utf-8格式,建议使用UltraEditor,可以直接使用该编辑器的'转换->ASCII到UTF-8(Unicode编辑)',或者将文件另存为UTF-8(无BOM)格式
步骤五 命令行执行:mysql -hlocalhost -uroot -p*** --default-character-set=utf8 new_dbname < /usr/local/dbname.sql
总结:这种方法有个致命之处就是当数据中有大量中文字符和其他特殊符号字符时,很有可能导致在[步骤五]时报错导致无法正常导入数据,如果数据库比较大可以分别对每张表执行上述步骤
三:
为了解决第一种方法中总结时说到的问题,在网上苦苦查找了一天资料才东拼西凑的搞出一个比较稳妥的解决方法
步骤一 将待导出的数据表的表结构导出(可以用Phpmyadmin、mysqldump等,很简单就不说了),然后将导出的create table语句的CHARSET=latin1改为CHARSET=utf8,在目标库newdbname中执行该create table语句把表结构建好,接下来开始导出-导入数据
步骤二 命令行:进入mysql命令行下,mysql -hlocalhost -uroot -p*** dbname
步骤三 执行SQL select * from tbname into outfile '/usr/local/tbname.sql';
步骤四 将tbname.sql转码为utf-8格式,建议使用UltraEditor,可以直接使用该编辑器的'转换->ASCII到UTF-8(Unicode编辑)',或者将文件另存为UTF-8(无BOM)格式
步骤五 在mysql命令行下执行语句 set character_set_database=utf8; 注:设置mysql的环境变量,这样mysql在下一步读取sql文件时将以utf8的形式去解释该文件内容
步骤六 在mysql命令行下执行语句 load data infile 'tbname.sql' into table newdbname.tbname;
注意:千万不要忘了第四步
采用第二种方法,所有数据均正常导入,且格式转换成功没有乱码
四:
mysql数据转换编码
[root@piglet home]# mysqldump -u root -p --default-character-set=latin1 --set-charset=utf8 --skip-opt aiyomama_cn > /home/sites/savemoney.sql
Enter password:
五:
下回来的是latin1乱码的文件,因此,本机也架起Mysql5.0的环境
2. 然后新建一个空数据库,编码为UTF8,用下回来的sql文件导入
3. 再用phpmyadmin导出来,这样编码就成了UTF8
4. 把导出的sql文件中所有的替换成
5. 删除原来的latin1编码的数据库,导入这个UTF8编码的sql文件
完成:)
补充一下重点:
在执行完第2步的时候,用PHPMYADMIN打开数据库看看
里面所有的表和字段都还是LATIN1,没关系,继续执行第3步
执行完第3步,可以用文本编辑器打开SQL文件看看,换UTF8格式查看
这时,表和字段的内容就是UTF8了!
以上五种方法我都试验了一遍,可能是数据库实在太大,有的方法完全不行,有的可以但只能转换到一半也出错停止,无法转换完全部,最后在不懈努力之下找到个编码转换的PHP小脚本文件,使用后全部库转换正常,看来还是护具来的方便啊,手工忙了半天都没解决。。。不过还有点就是不管遇到什么问题,搜索引擎一般情况下都能帮助你解决问题,只要你愿意去花时间自己解决问题。
您看到此篇文章时的感受是: