RDS For MySQL 字符集相关说明
https://help.aliyun.com/knowledge_detail/41706.html?spm=5176.7841698.2.9.F5YjI5
- 字符序命名规则
- 字符集相关 MySQL 命令
- 控制台修改字符集参数 ( character_set_server ) 的方法
- 使用 sql 语句修改数据库字符集的方法
- 如何保证数据库字符集编码正确设置
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; 来修改客户端的设置,然后再进行相关的操作。
如果问题还未能解决,请联系售后技术支持。
RDS For MySQL 字符集相关说明的更多相关文章
- MySQL 字符集相关
为了支持各个国家的不同语言,MySQL 从4.0 版本开始支持了很多种字符集,且每种字符集支持了 N 多种排序规则.我们可以在建表的时候指定字符集的排序规则,不指定时会有一个默认规则. 字符集和排序规 ...
- 从一个慢查询到MySQL字符集编码
从一个慢查询到MySQL字符集编码 目录 从一个慢查询到MySQL字符集编码 1. 问题起源 2. MySQL字符集和字符集排序规则 2.1 字符集相关概念 2.2 MySQL中的字符集和字符集排序规 ...
- RDS MySQL 全文检索相关问题的处理
RDS MySQL 全文检索相关问题 1. RDS MySQL 对全文检索的支持 2. RDS MySQL 全文检索相关参数 3. RDS MySQL 全文检索中文支持 3.1 MyISAM 引擎表 ...
- MySQL字符集编码相关
Windows 10家庭中文版,MySQL 5.7.20,2018-05-07 Part.1 查找数据库的字符集编码 查看MySQL字符集编码:status命令 使用命令行登录MySQL服务器,然后 ...
- RDS for MySQL 如何使用 Percona Toolkit
Percona Toolkit 包含多种用于 MySQL 数据库管理的工具. 下面介绍常用的 pt-online-schema-change 和 pt-archiver 搭配 RDS MySQL ...
- Mysql字符集设置
转 基本概念 • 字符(Character)是指人类语言中最小的表义符号.例如’A'.’B'等:• 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encodi ...
- MySQL字符集
字符集的选择 1.如果数据库只需要支持中文,数据量很大,性能要求也很高,应该选择双字节定长编码的中文字符集(如GBK).因为相对于UTF-8而言,GBK"较小",每个汉字只占2个字 ...
- Mysql字符集知识总结
字符集&字符编码方式 字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,这里的字符可以是英文字符,汉字字符,或者其他国家语言字符. 常见字符集 ...
- MySQL字符集转换引发插入乱码问题
根据http://www.cnblogs.com/cchust/p/4601536.html进行验证测试 问题背景 在mysql上面执行一条普通的insert语句,结果报错: Incorrect st ...
随机推荐
- ARM VM安装Linux Diagnostic 2.3扩展
目前创建的Azure Linux虚拟机默认安装的是LAD 3.0,如果客户有特殊需求,可以通过如下方法安装LAD 2.3 1.在Azure Portal卸载LAD 3.0 2.使用Azure Powe ...
- 关于二分查找 使用 lower_bound
在寻找单调递增最长自序列 , 的时候能不能确认出来哪个是单调递增最长自序列 ? 我的想法是 if(location>=num) dp[location]=b; 这样的 , 基于http:// ...
- python中的深拷贝和浅拷贝(面试题二)
一.浅拷贝 定义:浅拷贝只是对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值. 浅拷贝的特点: 公用一个值: 这两个变量的内存地址一样: 对其中一个变量的值改变,另外一个变量的值也 ...
- excel另存为csv
# -*- coding: utf-8 -*- """ Created on Tue Jul 11 21:25:57 2017 import pandas as pd i ...
- UNIX环境高级编程--9. 进程控制
进程关系 当子进程终止时,父进程得到通知并能取得子进程的退出状态. 终端登录: 早起UNIX系统通过哑终端登录,本地的终端 or 远程的终端 .主机上链接的终端设备是固定的,所以同时登录数 ...
- 六时车主 App 隐私政策
六时车主 App 隐私政策 本应用尊重并保护所有使用服务用户的个人隐私权.为了给您提供更准确.更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息.但本应用将以高度的勤勉.审慎义 ...
- 详谈java集合框架
1.为什么使用集合框架 当我们并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象——可以使用Java集合框架 2.Java集合框架包含的内容 接口:(父类)Collection接口下包含Li ...
- Python语言之数据结构2(字典,引用)
1.字典 键值对. dict={ "key1" : "value1", "key2" : "value2" } #add ...
- Lvs Keepalive DR模式高可用配置
Lvs Keepalive DR模式配置 一.环境 #DIP# eth0:192.168.233.145#VIP# eth0:0 192.168.233.250/32 #RIP1:192.168.23 ...
- Oracle开发常用函数 max 最大数 自动加 1 的模式
create sequence bs_com_seq increment by 1 start with 1 minvalue 1 maxvalue 999999 cycle nocache orde ...