RDS For MySQL 字符集相关说明

https://help.aliyun.com/knowledge_detail/41706.html?spm=5176.7841698.2.9.F5YjI5


1. 字符序命名规则

以字符序对应的字符集名称开头,以 _ci(大小写不敏感)、_cs(大小写敏感)、_bin(按编码值比较,大小写敏感)结尾。

例如:当会话的 collation_connction 设置为字符序 utf8_general_ci 时,字符 a 和字符 A 是等价的;

而当其设置为 utf8_bin 时,字符 a 和字符 A 是不等价的。

请参考以下示例:

2. 字符集相关 MySQL 命令


show global variables like ‘%char%‘;    #查看RDS实例字符集相关参数设置

show global variables like ‘coll%‘;     #查看当前会话字符序相关参数设置

show character set;                     #查看实例支持的字符集

show collation;                         #查看实例支持的字符序

show create table table_name \G         #查看表字符集设置

show create database database_name \G   #查看数据库字符集设置

show create procedure procedure_name \G #查看存储过程字符集设置

show procedure status \G                #查看存储过程字符集设置

alter database db_name default charset utf8;  #修改数据库的字符集

create database db_name character set utf8;   #创建数据库时指定字符集

alter table tab_name default charset utf8 collate utf8_general_ci;   #修改表字符集和字符序

示例如图:

3. 控制台修改字符集参数(character_set_server)的方法:

在 RDS 实例控制台  参数设置 , 点击"笔" 样图标, 如图: 

"确定"   "提交参数" 即可,  如图:

注: 该参数修改后, 仅对开启高权限账号的实例后来创建的数据库有效. 对当前数据库无效.

4. 使用 sql 语句修改数据库字符集的方法:

语法如下:

修改库:
ALTER DATABASE 库名 CHARACTER SET  字符集名称 COLLATE  排序规则名称;
修改表:
ALTER TABLE 表名 CONVERT TO CHARACTER SET 字符集名称  COLLATE  排序规则名称;
修改一列:
ALTER TABLE 表名 MODIFY 列名  字段类型 CHARACTER SET  字符集名称  COLLATE 排序规则名称;

示例: 下面三条sql 分别将库 dbsdq , 表 tt2 , 表 tt2 中的 c2 列修改为utf8mb4 字符集, 代码如下:

alter database dbsdq character set utf8mb4 collate utf8mb4_unicode_ci;
use dbsdq;
alter table tt2 character set utf8mb4 collate utf8mb4_unicode_ci;
alter table tt2 modify c2  varchar(10) character set utf8mb4;

如图:

注意:

  • 修改列时,当前列中的所有行都会立即转化为新的字符集;
  • alter table 会对表加元数据锁(metadata lock), 详见:
    https://help.aliyun.com/knowledge_detail/6697124.html

5. 如何保证数据库字符集编码正确设置:

在数据库中字符集是在数据库设计的过程中需要详细考虑的一点,用户需要根据您的业务场景、用户数据等方面来考虑。

    • 查看数据库中设置字符集的参数

      代码:

  • show variables like ‘%character%‘;

    结果如图:

在下面的各参数必须需要保证除了character_set_filesystem外的所有的参数都保持统一才可以保证字符编码不会出现乱码的情况。

character_set_client、character_set_connection 以及 character_set_results 这几个参数都是客户端的设置

character_set_system、character_set_server 以及 character_set_database 是指服务器端的设置。

而对于这三个服务器端的参数来说的优先级是:
列级字符集 > 表级字符集 > character_set_database > character_set_server > character_set_system
列级的字符编码在服务器端是具有最高优先级的。

  • 如何能够保证我们的这些字段是一致的?

客户端字符集: 可通过如下方式来定义对应的character_set_client、character_set_connection以及character_set_results这几个参数。例如:

set names utf8;

服务器端字符集: 因设置有不同的等级,首先对于 character_set_system 暂时不提供更改,但是由于其优先级最低因此影响不大。

character_set_server的修改见上面 第 3 项 . 此处不再重复说明.

而对于character_set_database则是则是在数据库创建的时候指定的,如图:

做到上述的设置之后基本上可以保证字符编码不会出现乱码,对于在代码中设置客户端的字符编码的时候建议也可以通过 set names XXX; 来修改客户端的设置,然后再进行相关的操作。

如果问题还未能解决,请联系售后技术支持

时间: 2024-11-05 16:07:31

RDS For MySQL 字符集相关说明的相关文章

mysql字符集相关

一.查看 MySQL 数据库服务器和数据库字符集. mysql> show variables like '%char%'; 二.查看 MySQL 数据表(table) 的字符集. mysql> show table status from sqlstudy_db like '%countries%'; 三.查看 MySQL 数据列(column)的字符集. mysql> show full columns from countries; 四.查看当前安装的 MySQL 所支持的字符集.

第09章 mysql 字符集

2015-10-24 目录 参考资料 [1] 唐汉明.深入浅出MySQL 数据库开发.优化与管理维护(第2版)[M].北京:人民邮电出版社,2014 [2] Schwartz.高性能MySQL(第3版)[M].北京:电子工业出版社,2013 [3] 范德兰斯.MySQL开发者SQL权威指南 [M].北京:机械工业出版社,2008 [4] Forta.MySQL必知必会 [M].北京:人民邮电出版社,2009 [5] Mysql字符集设置 [6] 修改及查看mysql数据库的字符集 [7] MyS

RDS MySQL 全文检索相关问题的处理

RDS MySQL 全文检索相关问题 1. RDS MySQL 对全文检索的支持 2. RDS MySQL 全文检索相关参数 3. RDS MySQL 全文检索中文支持 3.1 MyISAM 引擎表 3.2 InnoDB 引擎表 4. like '%xxx%' 和全文检索的比较 4.1 like '%xxx%' 4.2 全文检索 5. ft_query_expansion_limit 参数作用 1. RDS MySQL 对全文检索的支持 RDS MySQL 5.5 仅 MyISAM 引擎表支持全

Mysql字符集书相关设置

最近,在项目组使用的mysql数据库中,插入数据出现乱码,关于这个问题做了下总结,我们从最基本的地方说起,到错误产生的深层次原因和解决办法. 基本概念 • 字符(Character)是指人类语言中最小的表义符号.例如’A'.’B'等:• 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encoding).例如,我们给字符’A'赋予数值0,给字符’B'赋予数值1,则0就是字符’A'的编码:• 给定一系列字符并赋予对应的编码后,所有这些字符和编码对组成的集合就

SQL Server 与MySQL中排序规则与字符集相关知识的一点总结

原文:SQL Server 与MySQL中排序规则与字符集相关知识的一点总结 字符集&&排序规则 字符集是针对不同语言的字符编码的集合,比如UTF-8字符集,GBK字符集,GB2312字符集等等,不同的字符集使用不同的规则给字符进行编码排序规则则是在特定字符集的基础上特定的字符排序方式,排序规则是基于字符集的,是对字符集在排序方式维度上的一个划分.排序规则是依赖于字符集的,一种字符集可以有多种排序规则,但是一种排序规则只能基于某一种字符集的比如中文字符集,也即汉字,可以按照“拼音排序”.“

关于MySQL字符集问题【已解决】

关于MySQL字符集问题[已解决] 先来看看我的字符集设置 全都是utf8.这里没有什么问题 接下来我创建了一个数据表book.来看下我创建的表结构 当输入命令:mysql> insert into book(bookname,publisher,author,price,detail) values('PHP','电子工业出版社','武胜利','80.00','与PHP相关的图书');ERROR 1366 (HY000): Incorrect string value: '\xB5\xE7\x

MySQL字符集编码

MySQL字符集编码总结 之前内部博客上凯哥分享了一篇关于mysql字符集的文章,之前我对mysql字符集一块基本没有深究过,看到凯哥文章后有些地方有点疑惑,遂自己去看了mysql的官方文档,并参考了凯哥的文章,总结了这篇博文.本文主要是对mysql常见的字符集问题进行整理,如有错误,请大家指正. 1.MySQL字符集编码简介 谈到字符集,总会跟编码扯上关系,有关字符集和编码的理论知识请参见我之前的文章.MySQL内部是支持多种字符集的,这里就不再严格区分字符集和编码的概念了.同时,MySQL中

Mysql字符集知识总结

字符集&字符编码方式 字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,这里的字符可以是英文字符,汉字字符,或者其他国家语言字符. 常见字符集包括:ASCII字符集.LATIN1字符集.GB2312字符集.GBK字符集.GB18030字符集.Unicode字符集等.字符编码方式是用一个或多个字节表示字符集中的一个字符.每种字符集都有自己特有的编码方式,因此同一个字符,在不同字符集的编码方式下,会产生不同的二进制.ASCII是基于罗马字母表的一套字

linux下mysql字符集编码问题的修改

安装完的MySQL的默认字符集为 latin1 ,为了要将其字符集改为用户所需要的(比如utf8),就必须改其相关的配置文件:由于linux下MySQL的默认安装目录分布在不同的文件下:不像windows一样放在同一目录下,只需修改其中的my.ini文件,重起后就生效了:所以先来看看linux下MySQL的数据库文件.配置文件和命令文件分别在不同的目录 : 1.数据库目录,其所创建的数据库文件都在该目录下 /var/lib/mysql/ 2.配置文件 (mysql.server命令及配置文件所在