Mysql
 sql >> Database >  >> RDS >> Mysql

Come risolvere l'errore Mix illegale di regole di confronto (latin1_general_ci,IMPLICIT).

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.