南方Linux论坛   首页 | 行业 | 下载 | Blog | 桌面应用 | 数据库 | 电子商务 | 文摘 | 网络服务 | 开源 | 系统管理 | 内核代码 | 教程

返回   南方Linux论坛 > Linux 高级应用讨论区 > Linux 数据库专题讨论
注册账号 Blog 论坛帮助 会员列表 日历事件 搜索 今日新帖 标记讨论区已读

发表新主题 回复
 
主题工具 显示模式
旧 2008-02-11, 02:08 PM   #1
TOM
级别:10 | 在线时长:143小时 | 升级还需:22小时级别:10 | 在线时长:143小时 | 升级还需:22小时级别:10 | 在线时长:143小时 | 升级还需:22小时级别:10 | 在线时长:143小时 | 升级还需:22小时
论坛义工
 
注册日期: 2006-07-05
帖子: 477
精华: 0
现金: 1632 金币
资产: 1632 金币
声望: 16 TOM 正向着好的方向发展
默认 从MySQL4.0升级至5.0。

首先把资料dump出来 。由於先前用4.0时我的资料是存成latin1,不管是Big5或是wordpress的UTF-8存进去后都是变成lantin1,所以dump出来 后要用iconf或piconf把他转成UTF-8,记得dump出来时要加上–default-character-set=

如果原先是Big5的资料,像我的Coppermine Photo Gallery,dump出来后就直接把Big5转成UTF-8即可

#mysqldump -u帐号 -p –default-character-set=latin1 资料库 >output.sql

#piconv -f big5 -t utf8 output.sql >utf8.sql

如果原先是UTF-8的资料,像是wordpress,dump出来后要先转成Big5后,再把他转成UTF-8,因为原先dump出来的是偽装成UTF-8的lantin1不是真正的UTF-8

#mysqldump -u帐号 -p –default-character-set=latin1 资料库 >output.sql

#piconv -f utf8 -t big5 output.sql > big5.sql

#piconv -f big5 -t utf8 big5.sql >utf8.sql

接著MySQL5.0灌好后,MySQL的my.cnf设定档內要加入以下设定

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci

但也有看到资料說[mysqld]那边加上 default-character-set=utf8跟 default-collation=utf8_general_ci后,一些旧的使用Big5编码的php程式,又沒有加入连资料库时指定的编码方式的 相关code的话,那些程式就会烂掉,所以目前我是沒有加上那两行。

接著建立空的资料库準备把dump出来的资料import进去,SQL语法应该类似下面这樣,要加上

DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
CREATE DATABASE `abc` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

我是用phpMyAdmin建立资料库的,建立时”校对”要选utf8_general_ci

再来就是把刚刚dump出来后的sql档在import进去了,这裡有两点要注意的。

1.刚刚dump出来的sql档如果原先是Big5里面会有一些像是许功盖这些字后面会多了一个”\“,记得用文字编辑器把他消掉2.import进去时记得还要先修改一下dump出来的sql档,在最前面加上
SET NAMES utf8;

SET CHARACTER_SET_CLIENT=utf8;

SET CHARACTER_SET_RESULTS=utf8;

再来把每个资料表后面的
TYPE=MyISAM;
改成

ENGINE=MyISAM DEFAULT CHARSET=utf8;

都改好后就可以把他import进去了

#mysql -u帐号 -p 资料库 < utf8.sql

不过以上实在有点麻烦,所以我把多余的”/“消掉后,就直接用phpMyAdmin把他import进去了,import时记得文字编码档案要选utf8即可

顺便记一下写php时如是配合UTF-8的资料库的话该注意,在真正送出query前要先加入以下三行

mysql_query(”SET NAMES ‘utf8‘”);
mysql_query(”SET CHARACTER_SET_CLIENT=utf8“);
mysql_query(”SET CHARACTER_SET_RESULTS=utf8“);

检查语系的SQL语法
show variables like “%character%”;
TOM 当前离线  
回复时引用此帖
发表新主题 回复


当前查看此主题的会员: 1 (0 位会员和 1 位游客)
 
主题工具
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

论坛启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


所有时间均为北京时间。现在的时间是 07:04 AM


vBulletin 3.6.8 Powered by 南方Linux联盟
版权所有 ©2004 - 2009, bbs.linuxunion.net