MySQL字符集更换与设置

情况一:MySQL数据库初始化操作

确定MySQL字符集:

show variables like 'character_set%';

临时修改 

SET character_set_client=utf8

SET character_set_connection=utf8

SET character_set_results=utf8

SET character_set_server=utf8

永久修改 /etc/my.cnf

[client]

default-character-set=utf8

[mysqld]

character_set_server=utf8

[mysql]

default-character-set=utf8

保存并重启MySQL服务


情况二:将字符集为latin1已有记录的数据转成utf8,并且已经存在的记录不乱码 。(适用生产环境中使用)

1):导出表结构

mysqldump –uroot   --default-character-set=latin1 -d book2> booktable.sql 

2):编辑booktable.sql 将latin1修改成utf8

vim booktable.sql 

:%s/latin1/utf8/g

3):确保数据库不再更新,导出所有数据,不导表结构

mysqldump  -uroot –p123456 --quick --no-create-info --extended-insert --default-character-set=latin1 book2>bookdata.sql

参数说明:

--quick:用于转储大的表,强制mysqldump从服务器一次一行的检索数据而不是检索所有行,并输出当前cache到内存中

--no-create-info:不要创建create table语句

--extended-insert:使用包括几个values列表的多行insert语法,这样文件更小,IO也小,导入数据时会非常快

--default-character-set=latin1:按照原有字符集导出数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码

4):打开bookdata.sql 将SET NAME latin1 修改成SET NAME utf8

vim bookdata.sql 

/*!40101 SET NAMES utf8 */;

5):重新建库

mysql> create database book2 default charset utf8;

6):建立表,导入我们之前导出的表的数据库

mysql –uroot –p123456 book <booktable.sql

7):导入数据

    mysql -uroot -p123456 book2 <bookdata.sql

版权声明:
作者:WaterBear
链接:https://l-t.top/1766.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>