如何强制 MySQL 查询的值使用特定排序规则?
我想使用 UUID()
生成主键。
经过一番调查,我认为这应该可行:
INSERT INTO aTable (`id`) VALUES (UNHEX(REPLACE(UUID(),'-','')));
其中 id
的类型为 BINARY(16)
。
不幸的是,UUID()
返回一个使用 utf8_general_ci
排序规则的值。我的数据库的其余部分使用 utf8_unicode_ci
,这意味着我收到以下错误:
#1270 - Illegal mix of collations (utf8_general_ci,COERCIBLE), (utf8_unicode_ci,COERCIBLE), (utf8_unicode_ci,COERCIBLE) for operation 'replace'
How can I suggest UUID()
to play better and use utf8_unicode_ci
?
I want to use UUID()
to generate primary keys.
After some investigation, I thought this should work:
INSERT INTO aTable (`id`) VALUES (UNHEX(REPLACE(UUID(),'-','')));
Where id
is of the type BINARY(16)
.
Unfortunately, UUID()
returns a value which uses the utf8_general_ci
collation. The rest of my database uses utf8_unicode_ci
, which means I get the following error:
#1270 - Illegal mix of collations (utf8_general_ci,COERCIBLE), (utf8_unicode_ci,COERCIBLE), (utf8_unicode_ci,COERCIBLE) for operation 'replace'
How can I persuade UUID()
to play nicely and use utf8_unicode_ci
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)