博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL字符集
阅读量:2337 次
发布时间:2019-05-10

本文共 1328 字,大约阅读时间需要 4 分钟。

查看MySQL支持的字符集

mysql> show character set;

查看mysql当前字符集

mysql> show variables like ‘character_set%’;

character_set_client:客户端的字符集

character_set_results:结果字符集
character_set_connection:连接字符集

临时更改方法

在插入数据前可以指定字符集
mysql> set names utf8;

永久更改方法

修改my.cnf
[client]
default-character-set=utf8

[mysqld]

default-character-set=utf8 适合5.1及之前版本
character-set-server=utf8 适合5.5及之后版本
提示:client无需重启服务,退出mysql服务重新登录即可.mysqld修改需要重启服务

更改MySQL数据库已有数据字符集

更改库
alter database 库名 character set utf8;
更改表
alter table 表名 character set utf8;
这两种方法不会改变已有记录的字符集,而只对新创建的表或记录生效

已有记录的字符集调整,必须先将数据导出,经过修改字符集后重新导入(将原有lating1字符集改为utf8)

1 导出表结构
mysqldump –uroot –p --default-character-set=latin1 -d 数据库名称 >alltable.sql
–default-character-set=latin1 表示已latin1字符集进行连接
-d 只导表结构
2 编辑alltable.sql将latin1改为utf8
/*!40101 SET NAMES latin1 */;
3 确保数据库不在更新,导出所有数据
mysqldump –uroot –p --quick --no-create-info --extended-insert --default-character-set=lating1 数据库名称 >alldata.sql
参数说明
–quick 用于转储大的表,强制mysqldump从服务器一次一行的检索数据而不是检索所有行并输出cache到内存中
–no-create-info 不创建create table语句
–extended-insert 使用包括几个values列表的多行insert语法,这样文件更小IO也小
–default-character-set 按照原有字符集导出数据,这样导出的文件不会报错成乱码
4 打开alldate.sql将set names latin1修改为 set names utf8
5 建库
carte database 数据库名 default charset utf8;
6 创建表执行alltable.sql
mysql –uroot –p111111 <alltable.sql
7 导入数据
mysql –uroot –p111111 <alldata.sql

转载地址:http://qkrpb.baihongyu.com/

你可能感兴趣的文章
linux内核模块传参
查看>>
Ubuntu修改用户名的问题
查看>>
Copy_from&to_user详解
查看>>
关于bash命令
查看>>
编译内核模块 .ko文件的注意事项 缺少:mmzone.h bounds.h
查看>>
Android开发:检测耳机的插入状态
查看>>
Netty 源码分析-服务端
查看>>
Netty 源码分析-ChannelPipeline
查看>>
分库分表的起源
查看>>
【深入理解JVM虚拟机】第1章 走进java
查看>>
【深入理解JVM虚拟机】第2章 java内存区域与内存溢出异常
查看>>
【深入理解JVM虚拟机】第3章 垃圾收集器与内存分配策略
查看>>
性能优化-jvm
查看>>
性能优化-mysql
查看>>
性能优化-tomcat
查看>>
JVM内存模型、指令重排、内存屏障概念解析
查看>>
【java基础】集合框架总结
查看>>
Elasticsearch-基础介绍及索引原理分析
查看>>
【深入理解JVM虚拟机】第7章 虚拟机类的加载机制
查看>>
【C++】二、指针数组与数组指针
查看>>