RDS for MySQL字符集相关说明

字符序命名规则

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

例如:当会话的collation_connection设置为字符序utf8_general_ci时,字符a和字符A是等价的;而当其设置为utf8_bin 时,字符a和字符A是不等价的。

请参考以下示例:

字符集相关 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;   #修改表字符集和字符序

示例如图:

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

重要

修改参数character_set_server需要重启实例,建议在业务低峰期进行操作。

操作步骤

  1. 登录RDS管理控制台

  2. 在页面左上角,选择实例所在地域。选择地域

  3. 找到目标实例,单击实例ID。

  4. 在左侧导航栏中单击参数设置

  5. 可修改参数页签下查找到character_set_server,单击右侧进行修改并单击确定修改character_set_server参数

  6. 在右上角单击提交参数,在弹出的对话框中单击确定,等待实例重启。

    说明

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

使用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 convert to character set utf8mb4 collate utf8mb4_unicode_ci;
alter table tt2 modify c2  varchar(10) character set utf8mb4 collate utf8mb4_unicode_ci;
说明
  • 修改列时,当前列中的所有行都会立即转化为新的字符集。

  • alter table会对表加元数据锁(metadata lock)。

  • 如果需要指定字符集,则需要单独修改,否则会跟随默认设置的全局服务器级别字符集。字符集的设置有四级:服务器级、数据库级、表级、字段级。前三种均为默认设置,建议用SHOW CREATE TABLE tableName; SHOW FULL FIELDS FROM tableName; 来检查当前表中字段的字符集设置。