mySQL:更新记录/重复条目/整理/二进制
mySQL: update Record / duplicate entry / collate / binary
我有一个名为 url
(varchar 255) 的字段,它设置为 unique
和 utf8mb4_general_ci
作为排序规则。
尝试更新记录以设置此 url 时:https://en.wikipedia.org/wiki/Léa_(film)
我收到重复错误,因为存在另一条记录 https://en.wikipedia.org/wiki/Lea_(film) 作为 URL
(没有口音)。
我试图添加 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
?
谢谢
when trying to update a record to set this url: https://en.wikipedia.org/wiki/Léa_(film)
i am getting a duplicate error because another record exsists having https://en.wikipedia.org/wiki/Lea_(film)
as URL (without accent).
如果不能将此类值视为重复值,则必须执行 ALTER TABLE 以更改列的设置并根据它的排序规则进行设置(例如,utf8mb4_0900_as_ci
或 utf8mb4_bin
- 请参见 SHOW COLLATION LIKE 'utf8mb4_%';
和 select 正确排序)。
我有一个名为 url
(varchar 255) 的字段,它设置为 unique
和 utf8mb4_general_ci
作为排序规则。
尝试更新记录以设置此 url 时:https://en.wikipedia.org/wiki/Léa_(film)
我收到重复错误,因为存在另一条记录 https://en.wikipedia.org/wiki/Lea_(film) 作为 URL (没有口音)。
我试图添加 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
?
谢谢
when trying to update a record to set this url:
https://en.wikipedia.org/wiki/Léa_(film)
i am getting a duplicate error because another record exsists having
https://en.wikipedia.org/wiki/Lea_(film)
as URL (without accent).
如果不能将此类值视为重复值,则必须执行 ALTER TABLE 以更改列的设置并根据它的排序规则进行设置(例如,utf8mb4_0900_as_ci
或 utf8mb4_bin
- 请参见 SHOW COLLATION LIKE 'utf8mb4_%';
和 select 正确排序)。