mySQL:更新记录/重复条目/整理/二进制
Posted
技术标签:
【中文标题】mySQL:更新记录/重复条目/整理/二进制【英文标题】:mySQL: update Record / duplicate entry / collate / binary 【发布时间】:2022-01-18 15:41:37 【问题描述】:我有一个名为 url
(varchar 255) 的字段,它被设置为 unique
和 utf8mb4_general_ci
作为排序规则。
尝试更新记录以设置此 url 时:https://en.wikipedia.org/wiki/Léa_(film)
我收到重复错误,因为存在另一条记录,其 URL 为 https://en.wikipedia.org/wiki/Lea_(film) (没有重音)。
我尝试添加COLLATE utf8_bin
,但出现错误:
COLLATION 'utf8_bin' is not valid for CHARACTER SET 'latin1'
我也尝试使用 (CAST 'https://en.wikipedia.org/wiki/Léa_(film)' AS BINARY)
转换 URL,但也没有帮助。
有没有办法或唯一的解决方案将字段排序规则更改为utf8_bin
?
谢谢
【问题讨论】:
为您的表和会话字符集/排序规则设置显示完整的 CREATE TABLE。 我尝试添加 COLLATE utf8_bin,但出现错误显示您在哪里以及如何尝试这样做。 【参考方案1】:尝试更新记录以设置此 url 时:
https://en.wikipedia.org/wiki/Léa_(film)
我收到重复错误,因为存在另一条记录,其 URL 为
https://en.wikipedia.org/wiki/Lea_(film)
(不带重音符号)。
如果不能将此类值视为重复值,则必须执行 ALTER TABLE for 以更改列的设置并根据排序规则进行设置(例如,utf8mb4_0900_as_ci
或 utf8mb4_bin
- 请参阅 SHOW COLLATION LIKE 'utf8mb4_%';
并选择正确的排序规则)。
【讨论】:
以上是关于mySQL:更新记录/重复条目/整理/二进制的主要内容,如果未能解决你的问题,请参考以下文章