为什么我的MySQL实例认为“'ī”和“ i”是相等的字符?

基督教女青年会你好

我遇到了MySQL中的唯一性约束问题。我有两个不同的角色:

  • ī 这是ASCII十进制299
  • i 这是ASCII十进制109

为什么MySQL认为这些相等?当我运行以下命令时:

SELECT STRCMP('ī', 'i')

我得到的返回值为0

根据请求,以下是有关我的环境的一些信息:

mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4                  | utf8mb4_unicode_ci   |
+--------------------------+----------------------+
主教

您的数据库默认默认不区分大小写:这是ci结尾的部分@@collation_database在这种校对中,对于大多数语言来说,变音符号都被折叠。从文档:

为了进一步说明,utf8_general_ci和utf8_unicode_ci中都具有以下相等性(有关比较或搜索中的影响,请参见第10.8.6节“排序规则的影响示例”):

Ä=
AÖ=
OÜ= U

https://dev.mysql.com/doc/refman/8.0/zh-CN/charset-unicode-sets.html

除非您有理由这样做,否则建议您更改此默认值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JavaScript为什么认为354224848179262000000和354224848179261915075是相等的?

可变类型:为什么具有相同内容的数组在 Python 和 Ruby 中被认为是相等的,但在 Javascript 中不是?

为什么我的字符串比较认为'100%'<'70%'?

为什么 R 认为我导入的字符向量是数字?

为什么在控制流图中变量“i”和“j”被认为是死的?

为什么我的$ q决心和诺言不能像我认为的那样起作用?

为什么将单个字符和“单个字符字符串”转换为long(.toLong())时不相等

为什么本地VM无法按照我认为的方式通过DNS和NSLookup解析?

为什么相同的字符不相等

从托管实例中的字符串转换日期和/或时间时转换失败-为什么?

对象和字符串相等性和内存图

MySQL认为'е'和'ё'相等,如何设置它们以使其与众不同?

为什么Thread和Task的逻辑结束时间相等?

为什么arange和linspace无法产生相等的对象?

为什么长整数和小数之间的相等不交换?

为什么 == 和 === 相等似乎对 UIView 类起作用?

在Java lambda相等和/或实例化上

为什么Python解释器认为我的Int输入是字符串?

为什么 GDB 认为我的 Fortran 字符串是 ~4GiB

为什么MySQL / MariaDB认为字符串(uuid)等于整数?

为什么在JS类方法中定义和调用的函数中未定义此变量。我认为这是窗口

uniq为什么认为あい和いあ是相同的?

为什么debian和ubuntu默认为运行级别2?

equal()和equalsIgnoreCase()对于相等的字符串返回false

StringBuilder和字符串相等性检查

为什么我不能创建字符串映射和通用对象

为什么我用.concat()和+ =用Java字符串得到不同的输出?

连接数字和字符串为什么我得到这个结果

为什么我要使用HPROF Viewer和Analyzer来查找“重复字符串”?