从MySQL4.0向MySQL5迁移数据
用phpMyAdmin时在导入和导出MySQL5数据时,有一个SQL compatibility mode选项,其可选值为NONE、ANSIDB2、MAXDB、MYSQL323、MYSQL40、MSSQL、ORACLE、TRADITIONAL。这是MySQL解决导入导出数据时不同数据库类型或者版本SQL语句不同的问题。MYSQL40选项明显是为了解决和MYSQL4.0数据迁移问题,但是用phpMyAdmin管理MySQL4.0(版本是4.0.25)时,则没有SQL compatibility mode这个选项,应该是不支持吧。
MySQL的默认编码是latin1,而从MySQL4.0中导出数据的SQL语句并没有编码声明(《利用phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5》),所以如果从MySQL4.0中导出数据的编码不是latin1,比如是utf8,那么直接导入到MySQL5中编码会是默认的latin1而出现中文乱码。所以操作步骤如下:
- 用phpMyAdmin从MySQL4.0中导出所需的数据表,并勾选上“zip压缩”或“gzip压缩”,这样导出的数据量小。

- 用phpMyAdmin在MySQL5中创建一个新的数据库,注意需要声明编码为实际编码,比如utf8。如果不声明编码,那么导致导入的数据编码全部是latin1,而出现中文乱码,无法简单修正。

- 在import页面把从MySQL4.0中导出的数据导入,注意选择字符集和SQL compatibility mode模式为MYSQL40,这样整个数据就导入成功了。

由于MySQL默认编码的原因,直接导入整个数据库则无法设置其编码,从而导致中文乱码,所以第1步要求导出的是数据库中的表而不是整个数据库,要想导入整个数据那么需要修改MySQL的默认编码,修改安装目录的下的my.ini文件(Unix下是my.cnf)中对Client和Server的编码声明,然后重启服务即可:default-character-set=utf8
标签:MySQL, phpMyAdmin, utf-8, 乱码, 编码
作者:秦歌,时间:2007-10-07 0:36,归纳于:Apache & MySQL & PHP,订阅:RSS 2.0,引用:Trackback

非常好的文章,请问是否可以转载?
请问 为什么我的PHPadmin 没有新建数据库的权限~~ 就是您所指的第二步 我的显示没有权限
你看看你的MySQL是否配置正确,MySQL的root权限是否给了PHPadmin