平时我们在字符转换的时候,经常是这么做的:
ALTER TABLE `t1` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
这种做法在某些时候是不能工作的,我们来看一个例子:
1, CREATE TABLE `t1` (`c1` text NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;
2, ALTER TABLE `t1` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
3, SHOW CREATE TABLE `t1`\G
*************************** 1. row ***************************
TABLE: t1
CREATE TABLE: CREATE TABLE `t1` (
`c1` mediumtext NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row IN SET (0.01 sec)
此时我会发现表结构会有所变化,从 text 变成 mediumtext!!!
这样是不能达到我们的目的的。
我们可以采用一个perl脚本来完成这些事情,在适当的时候还能保留全文索引,下载地址如下:
wget
脚本执行如下:
./convert_charset -u root -p 1234 --collate utf8_general_ci -d test --tables t1
注释如下
root 数据库用户
1234 数据库密码
原文链接地址如下:
http://www.mysqlperformanceblog.com/2009/03/17/converting-character-sets/
阅读(1440) | 评论(0) | 转发(0) |