我们致力于一个MySQL知识的分享网站

  |   本站Feed      

数据库字符集修改

2009-07-15 17:56:43  |   才被阅读:259 次  |  
分类: MySQL初级应用  |   发布: OurMySQL  |   来源:stronghearted.net
标签:

如果mysql数据库在运行一段时间后(不能满足现有需求),需要调整数据库的。在调整数据库要注意:目标数据库的要源数据库的父集,这样在转换中,数据才不会丢失。Alter database character set及alter table character set不会更新已有的记录的

从gb2312字符集修改成gbk的步骤:

mysql> create database luoxuan default charset gb2312;  
mysql> use luoxuan  
Database changed  
mysql> create table test_charset  
    -> (i smallint not null auto_increment,  
    -> name varchar(10),primary key(i))  
    -> engine=myisam charset=gb2312 ;  
Query OK, 0 rows affected (0.05 sec)  

插入两条记录:  

insert into test_charset values(1,’李杰’)  —-支持gb2312  
insert into test_charset values(2,’郎郎’) —-不支持gb2312,支持gbk  
mysql> select * from test_charset;  
+—+——+  
| i | name |  
+—+——+  
| 1 | 李杰 |  
| 2 | ??   |  
+—+——+  
2 rows in set (0.00 sec) 

1、 导出表结构

[root@blog etc]# mysqldump -uroot -p*** –default-character-set=gbk -d luoxuan>createts.sql  

在使用mysqldump过程遇到点两个问题:  
一、  

[root@blog etc]# mysqldump -uroot -p*** –default-character-set=gbk -d luoxuan>createts.sql  
mysqldump: unrecognized option `–max_allowed_packet=16M’  

说明这个版本的mysqldump不支持max_allowed_packet,修改my.cnf,屏蔽。  

二、

[root@blog etc]# mysqldump -uroot -p*** –default-character-set=gbk -d luoxuan>createts.sql  
mysqldump: Got error: 1251: Client does not support authentication protocol requested by server;  
 consider upgrading MySQL client when trying to connect 

解决办法:  

mysql>set password for xxx@hostname=old_password(’yyy’); 
mysql>flush privileges; 

或直接更新权限表 

mysql>UPDATE mysql.user SET Password = OLD_PASSWORD(’newpwd’) 
WHERE Host = ‘host’ AND User = ‘user’;  
mysql>FLUSH PRIVILEGES;  

2、 手工修改createts.sql中表结构定义,定义为gbk

3、 停止服务,导出所有记录 

[root@blog etc]# mysqldump -uroot –p*** –quick –no-create-info –extended-insert –default-character-set=gb2312 luoxuan > data.sql

4、 修改data.sql文件,增加或修改为SET NAMES GBK

5、 新建数据库

mysql> create database xiyan default charset gbk;  
Query OK, 1 row affected (0.00 sec) 

6、 导入表

[root@blog etc]# mysql -uroot –p***  xiyan < createts.sql 

7、 导入数据

[root@blog etc]# mysql -uroot –p***  xiyan < data.sql 

8、 检查

mysql> use xiyan;  
Database changed  
mysql> show tables;  
+—————–+  
| Tables_in_xiyan |  
+—————–+  
| test_charset    |  
+—————–+  
1 row in set (0.00 sec)  
mysql> select * from test_charset;  
+—+——+  
| i | name |  
+—+——+  
| 1 | 李杰 |  
| 2 | ??   |  
+—+——+  
2 rows in set (0.00 sec)  
 
再执行插入:  
insert into test_charset values(2,’郎郎’);  
mysql> select * from test_charset;  
+—+——+  
| i | name |  
+—+——+  
| 1 | 李杰 |  
| 2 | ??   |  
| 3 | 郎郎 |  
+—+——+  
3 rows in set (0.00 sec) 

IT技术博客大学习

↑ 分享IT博客大学习的文章

相关文章

Leave a Reply