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

MySQL 8.0 utf8mb4_bin下插入不同孟加拉语单词触发唯一键重复错误

问题原因

  1. 字段排序规则未生效:唯一键的等值判断逻辑基于字段绑定的排序规则实现,你建表语句虽然声明了COLLATE=utf8mb4_bin,但如果受库/表级默认排序规则、客户端连接配置影响,jp_word实际生效的不是二进制排序规则,就会将存在Unicode等价性的两个孟加拉语单词判定为相等,触发唯一键冲突。
  2. MyISAM引擎缺陷:MySQL 8.0已停止对MyISAM引擎的功能维护,该引擎对Unicode字符的索引校验存在已知bug,哪怕字段用了二进制排序规则,也可能出现二进制值不同的字符串被判定为重复的问题。
  3. 低版本MySQL bug:你使用的8.0.12属于早期8.0版本,存在utf8mb4二进制排序规则校验异常的已知问题,也会导致该错误。

解决方法

  1. 确认并修正字段排序规则
    执行以下命令查看jp_word字段的实际属性:
SHOW FULL COLUMNS FROM lc6_words WHERE Field = 'jp_word';

如果返回结果的Collation列不是utf8mb4_bin,执行修改语句:

ALTER TABLE lc6_words MODIFY COLUMN jp_word VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
  1. 更换存储引擎为InnoDB
    InnoDB是MySQL官方目前主推的存储引擎,对Unicode索引的支持更稳定,执行语句更换:
ALTER TABLE lc6_words ENGINE = InnoDB;
  1. 升级MySQL版本
    如果上述操作后仍有问题,将MySQL升级到8.0最新稳定版即可修复低版本的字符集校验bug。
  2. 临时规避方案
    如果暂时无法修改表结构或升级数据库,可以新增一个二进制哈希字段作为唯一键,存储MD5(BINARY jp_word)的计算结果,绕过字符排序规则的校验问题。

内容的提问来源于stack exchange,提问作者sariDon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:27:02