Strávil jsem půl dne hledáním odpovědí na obávanou chybu „Illegal mix of collations“. Zjistil jsem, že některé sloupce v mé databázi nebyly konkrétně seřazeny utf8_unicode_ci . Zdá se, že mysql implicitně porovnal tyto sloupce utf8_general_ci .
Konkrétně spuštění dotazu „SHOW CREATE TABLE table1“ vygenerovalo něco jako následující:
| tabulka1 | CREATE TABLE table1
(id
int(11) NOT NULL,col1
varchar(4) CHARACTER SET utf8 NOT NULL,col2
int(11) NOT NULL,PRIMÁRNÍ KLÍČ (photo_id
,tag
)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
Všimněte si řádku 'col1' varchar(4) CHARACTER SET utf8 NOT NULL nemá zadané řazení. Poté jsem spustil následující dotaz:
ALTER TABLE table1 CHANGE col1 col1 VARCHAR(4) CHARACTER SET utf8COLLATE utf8_unicode_ci NOT NULL;
Tím se vyřešila moje chyba „Illegal mix of collations“. Doufám, že to pomůže někomu dalšímu.