Spędziłem pół dnia na szukaniu odpowiedzi na budzący postrach błąd „Nielegalna mieszanka zestawień”. Zauważyłem, że niektóre kolumny w mojej bazie danych nie zostały specjalnie posortowane utf8_unicode_ci . Wygląda na to, że mysql niejawnie posortował te kolumny utf8_general_ci .
W szczególności uruchomienie zapytania „SHOW CREATE TABLE table1” dało wynik podobny do następującego:
| tabela1 | CREATE TABLE table1
(id
int(11) NOT NULL,col1
varchar(4) ZESTAW ZNAKÓW utf8 NIE NULL,col2
int(11) NOT NULL,PRIMARY KEY (photo_id
,tag
)) ENGINE=Domyślny zestaw znaków InnoDB=utf8 UKŁADANIE=utf8_unicode_ci |
Zwróć uwagę na wiersz 'col1' varchar(4) ZESTAW ZNAKÓW utf8 NOT NULL nie ma określonego sortowania. Następnie uruchomiłem następujące zapytanie:
ALTER TABLE tabela1 CHANGE col1 col1 VARCHAR(4) ZESTAW ZNAKÓW utf8COLLATE utf8_unicode_ci NOT NULL;
To rozwiązało mój błąd „Illegal mix of collations”. Mam nadzieję, że to może pomóc komuś innemu.