You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB重音敏感但大小写不敏感的排序规则配置问题

解决方案:实现MariaDB重音敏感但大小写不敏感的唯一约束

针对你的MariaDB 10.6.18版本需求,核心是选对符合要求的排序规则——你需要的是大小写不敏感、重音敏感的规则,以下是具体操作:

为什么之前的尝试失败?

  • utf8mb4_unicode_ci:属于重音不敏感规则,会把é和e视为相同字符,所以Berlín和Berlin会被判定为重复。
  • utf8mb4_0900_as_ci:这是MySQL的排序规则命名,MariaDB不兼容该名称,对应MariaDB 10.6的同逻辑规则是utf8mb4_uca900_as_ci(基于UCA 9.0.0排序标准)。

正确操作步骤

1. 选择适配的排序规则

MariaDB 10.6支持两种符合你需求的排序规则,任选其一即可:

  • utf8mb4_unicode_520_as_ci:基于Unicode 5.2.0标准,满足大小写不敏感、重音敏感要求。
  • utf8mb4_uca900_as_ci:基于UCA 9.0.0标准,同样实现大小写不敏感、重音敏感逻辑。

2. 修改表字段及索引

先备份表数据(避免操作失误),然后执行以下SQL修改PUBLISHER_NAME字段的排序规则(唯一索引会自动继承字段的排序规则):

ALTER TABLE dim_publishers
MODIFY COLUMN PUBLISHER_NAME varchar(255) NOT NULL
COLLATE utf8mb4_unicode_520_as_ci;

或者使用UCA 9.0.0版本的规则:

ALTER TABLE dim_publishers
MODIFY COLUMN PUBLISHER_NAME varchar(255) NOT NULL
COLLATE utf8mb4_uca900_as_ci;

3. 验证效果

执行你提供的插入语句,会得到预期结果:

  • INSERT INTO dim_publishers (PUBLISHER_NAME) VALUES ('Berlin'); → 成功插入
  • INSERT INTO dim_publishers (PUBLISHER_NAME) VALUES ('BERLIN'); → 报错(重复值,大小写不敏感判定)
  • INSERT INTO dim_publishers (PUBLISHER_NAME) VALUES ('Berlín'); → 成功插入(重音敏感,视为新值)
  • INSERT INTO dim_publishers (PUBLISHER_NAME) VALUES ('BERlín'); → 报错(重复值,是Berlín的大小写变体)

内容的提问来源于stack exchange,提问作者Foxfire And Burns And Burns

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 23:31:07