mysql 查看collation_MySQL collation方法
问题是这样的:
一张test的表,字符集采用的latin1。
select to_id from test where to_id='cn象_王';
+---------------+
| to_id |
+---------------+
| cn陶_陶 |
| cn象_王 |
+---------------+
2 rows in set (0.00 sec)
取cn象_王的数据,居然把cn陶_陶的数据也取回来了。
这显然是不允许的。
查看它们的编码:
(root@im_offlog1a)[test]> select hex('cn陶_陶');
+----------------+
| hex('cn陶_陶') |
+----------------+
| 636ECCD55FCCD5 |
+----------------+
1 row in set (0.00 sec)
(root@im_offlog1a)[test]> select hex('cn象_王');
+----------------+
| hex('cn象_王') |
+----------------+
| 636ECFF35FCDF5 |
+----------------+
1 row in set (0.00 sec)
编码的确是不一样的,但是为什么mysql会认为这两条记录是一样的呢?
一开始我们就把问题定位于collation引起的问题。
show variables查看
| collation_connection | latin1_swedish_ci
| collation_database | latin1_swedish_ci
| collation_server | latin1_swedish_ci
手工把这些参数修改为latin1_bin,结果居然一样。这下感觉真是奇怪了。
这里先解释一下mysql collation的命名规则:
它们以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束
比如latin1字符集有以下几种校正规则:
校对规则 含义
latin1_german1_ci 德国DIN-1
latin1_swedish_ci 瑞典/芬兰
latin1_danish_ci 丹麦/挪威
latin1_german2_ci 德国 DIN-2
latin1_bin 符合latin1编码的二进制
latin1_general_ci 多种语言(西欧)
latin1_general_cs 多种语言(西欧ISO),大小写敏感
latin1_spanish_ci 现代西班牙
最后我们将表格重建,手工指定表格级别的collation为latin1_bin。
这个问题就得到了解决。
那么问题又来了,为什么我前面手工测试latin1_bin时不生效呢?
原来MySQL按照下面的方式选择表字符集和 校对规则:
如果指定了CHARACTER SET X和COLLATE Y,那么采用CHARACTER SET X和COLLATE Y。
如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。
否则,采用服务器字符集和服务器校对规则。
而我们在建表的时候指定了character set,所以它永远是采用对应的默认的校
mysql 查看collation_MySQL collation方法相关推荐
- mysql查看版本的方法
在日常项目开发过程中,我们经常要连接自己的数据库,此时不知道数据库的版本是万万不可的.今天小树懒来给大家总结一下查看mysql版本的方法. MySQL查看版本的方法主要有以下四种 方法1: 没有连接到 ...
- mysql查看版本号的方法
这里介绍四中不同的方法,它们分别运行在不同的环境中,最后对每种方法的优劣以及使用范围也做了总结. 1.直接在操作系统命令行下执行:MySQL –V C:>MySQL -V 2. MySQL 客户 ...
- MySQL查看表结构方法整理
在Mysql的shell命令行下查询表的结构: 1.desc(描述)命令 desc tablename; describe tablename; 2.show命令 show columns from ...
- Mysql查看表结构的三种方法
目录: mysql查看表结构 方法: show create table desc information_schema.COLUMNS 表结构: 获取所有的表结构及备注 根据库名导出所有表信息 根据 ...
- MySQL查看、创建和删除索引的方法
本文实例讲述了MySQL查看.创建和删除索引的方法.分享给大家供大家参考.具体如下: 1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别 ...
- linux mysql查看数据库编码_MySQL查看和修改字符编码的实现方法
MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8. 1.需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:&g ...
- mysql 查看当前数据库编码方式_MySQL查看与修改当前数据库编码的方法
MySQL中,数据库的编码是一个相当重要的问题,有时候我们需要查看一下当前数据库的编码,甚至需要修改一下数据库编码. 查看当前数据库编码的SQL语句为: mysql> use xxx Datab ...
- mysql 当前用户连接数,查看mysql当前连接数的方法详解
1.查看当前所有连接的详细资料: ./mysqladmin -uadmin -p -h10.140.1.1 processlist2.只查看当前连接数(Threads就是连接数.): ./mysqla ...
- navicat mysql 日志_使用Navicat查看MySQL日志的具体方法
使用Navicat查看MySQL日志的具体方法 发布时间:2020-05-18 14:04:52 来源:51CTO 阅读:699 作者:三月 下文主要给大家带来使用Navicat查看MySQL日志的具 ...
最新文章
- qml 自定义消息框_Qt qml 自定义消息提示框
- 2台xenserver组成的资源池开启HA存在的问题
- win7系统下配置openCV python环境附加 numpy +scipy安装
- 珍惜那些爱你的人,不要令他们失望,加油吧,我们。
- 5.3.3 计算机网络传输层之TCP拥塞控制(慢开始与拥塞避免、快重传和快恢复)
- oracle执行计划走偏处理步骤
- 如何用html构建ios应用,使用HTML5构建iOS原生APP
- 出现字迹模糊迹象_改变迹象:如何使用动态编程解决竞争性编程问题
- iOS开发之mac上搭建openfire服务器
- ReportViewer 安装
- vue-cli3使用vue-router 使用动态路由,在刷新页面时报错
- 使用jxls导出报错:Connot load XLS transformer please make sure a Transformer implementation is in classpath
- 《深度学习入门-基于Python的理论与实现》书籍介绍
- 暗月内网渗透实战——项目七
- NSFC 申请不中的反思 (内部讨论)
- 什么是动态 SQL
- mysql 大于当前时间条件查询
- 2020互联网大厂职级对应薪资一览表
- 16g电脑内存有什么好处_开车播放车载音乐 选择车载U盘有什么好处?
- 移动硬盘和Mac不兼容怎么办?	Paragon和Tuxera对比
热门文章
- 基于JAVA+SpringBoot+Mybatis+Vue+MYSQL的在线考试系统
- android java 调用栈_Android开发中打印方法调用栈
- Spring Boot的学习之路(02):和你一起阅读Spring Boot官网
- 如何做好部门以及公司的文档管理、知识管理以及情报管理?——By Me
- C++单目运算符的重载与双目运算符的重载【案例】
- java实现展示框,如何使用纯CSS实现蝴蝶标本的展示框效果
- python 字符串 包含 列表_python中包含字符串列表的列
- linux tee 日志输出_25 个 Linux 下最炫酷又强大的命令行神器,你用过其中哪几个呢?...
- 报告PPT|Python网络程序设计教学要点与案例分享(含音频)
- 详解Python对象属性