mySQL:更新记录/重复条目/整理/二进制

Posted

技术标签:

【中文标题】mySQL:更新记录/重复条目/整理/二进制【英文标题】:mySQL: update Record / duplicate entry / collate / binary 【发布时间】:2022-01-18 15:41:37 【问题描述】:

我有一个名为 url (varchar 255) 的字段,它被设置为 uniqueutf8mb4_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_ciutf8mb4_bin - 请参阅 SHOW COLLATION LIKE 'utf8mb4_%'; 并选择正确的排序规则)。

【讨论】:

以上是关于mySQL:更新记录/重复条目/整理/二进制的主要内容,如果未能解决你的问题,请参考以下文章

Mysql的增量备份 及基于时间点与位置的恢复

mysql二进制日志详解

mySql获取重复条目的最后记录[重复]

mySql获取重复条目的最后记录[重复]

MySQL - 忽略插入错误:重复条目

MySQL二进制日志