Как я могу заставить значение запроса MySQL использовать конкретное сопоставление? - PullRequest
2 голосов
/ 12 июля 2011

Я хочу использовать 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'

Как мне убедить UUID() хорошо играть и использовать utf8_unicode_ci?

1 Ответ

4 голосов
/ 12 июля 2011
INSERT INTO aTable (`id`) VALUES (UNHEX(REPLACE(UUID() COLLATE utf8_unicode_ci,'-','')));
...