Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2119787
  • 博文数量: 227
  • 博客积分: 10521
  • 博客等级: 上将
  • 技术积分: 3452
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-20 14:59
个人简介

低调做人,高调做事!

文章分类

全部博文(227)

文章存档

2013年(4)

2012年(8)

2011年(16)

2010年(24)

2009年(92)

2008年(83)

分类: LINUX

2009-03-18 23:39:11

平时我们在字符转换的时候,经常是这么做的:
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/
阅读(1408) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~