mysql修改有数据的数据库的字符集_数据库字符集修改

如果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)

觉得文章有用?立即:

和朋友一起 共学习 共进步!

猜您喜欢

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值