Ho passato mezza giornata a cercare risposte al temuto errore "Mix illegale di confronti". Ho scoperto che alcune colonne nel mio database non sono state raccolte in modo specifico utf8_unicode_ci . Sembra che mysql abbia raccolto implicitamente queste colonne utf8_general_ci .
In particolare, l'esecuzione di una query "SHOW CREATE TABLE1" ha prodotto un output simile al seguente:
| tabella1 | CREATE TABLE table1
(id
int(11) NOT NULL,col1
varchar(4) SET DI CARATTERI utf8 NON NULL,col2
int(11) NOT NULL, CHIAVE PRIMARIA (photo_id
,tag
)) MOTORE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
Nota la riga 'col1' varchar(4) CHARACTER SET utf8 NOT NULL non ha una confronto specificata. Ho quindi eseguito la seguente query:
ALTER TABLE table1 CHANGE col1 col1 VARCHAR(4) CHARACTER SET utf8COLLATE utf8_unicode_ci NOT NULL;
Questo ha risolto il mio errore "Mix illegale di regole di confronto". Spero che questo possa aiutare qualcun altro là fuori.