问题
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
?
回答1:
INSERT INTO aTable (`id`) VALUES (UNHEX(REPLACE(UUID() COLLATE utf8_unicode_ci,'-','')));
来源:https://stackoverflow.com/questions/6668989/how-can-i-force-the-value-of-a-mysql-query-to-use-a-particular-collation