Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So lösen Sie den Fehler „Illegal mix of collations“ (latin1_general_ci,IMPLICIT).

Ich habe einen halben Tag damit verbracht, nach Antworten auf den gefürchteten Fehler „Illegales Mischen von Sortierungen“ zu suchen. Ich habe festgestellt, dass einige Spalten in meiner Datenbank nicht speziell sortiert wurden utf8_unicode_ci . Es scheint, dass mysql diese Spalten utf8_general_ci implizit sortiert hat .

Insbesondere das Ausführen einer 'SHOW CREATE TABLE table1'-Abfrage gab etwa Folgendes aus:

| Tabelle1 | TABELLE ERSTELLEN table1 (id int(11) NOT NULL,col1 varchar(4) ZEICHENSATZ utf8 NICHT NULL,col2 int(11) NOT NULL, PRIMARY KEY (photo_id ,tag )) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |

Beachten Sie die Zeile 'col1' varchar(4) CHARACTER SET utf8 NOT NULL hat keine Sortierung angegeben. Ich habe dann die folgende Abfrage ausgeführt:

ALTER TABLE table1 CHANGE col1 col1 VARCHAR(4) CHARACTER SET utf8COLLATE utf8_unicode_ci NOT NULL;

Dies löste meinen Fehler „Illegale Mischung von Sortierungen“. Hoffe, das könnte jemand anderem da draußen helfen.