sql >> Database >  >> RDS >> Mysql

Hoe een illegale mix van sorteringen (latin1_general_ci,IMPLICIT) fout op te lossen

Ik heb een halve dag besteed aan het zoeken naar antwoorden op de gevreesde "illegale mix van collaties"-fout. Ik ontdekte dat sommige kolommen in mijn database niet specifiek waren verzameld utf8_unicode_ci . Het lijkt erop dat mysql deze kolommen impliciet heeft verzameld utf8_general_ci .

Specifiek, het uitvoeren van een 'SHOW CREATE TABLE table1'-query leverde iets als het volgende op:

| tabel1 | MAAK TABEL table1 (id int(11) NIET NULL,col1 varchar(4) KARAKTERINSTELLING utf8 NIET NULL,col2 int(11) NOT NULL,PRIMARY KEY (photo_id ,tag )) ENGINE=InnoDB STANDAARD CHARSET=utf8 COLLATE=utf8_unicode_ci |

Let op de regel 'col1' varchar(4) CHARACTER SET utf8 NOT NULL heeft geen sortering opgegeven. Ik heb toen de volgende query uitgevoerd:

WIJZIG TABEL tabel1 WIJZIG col1 col1 VARCHAR(4) CHARACTER SET utf8COLLATE utf8_unicode_ci NOT NULL;

Dit loste mijn fout "Illegale mix van sorteringen" op. Ik hoop dat dit iemand anders kan helpen.



  1. mysql-uitzondering onjuiste integerwaarde:'@column' voor kolom van asp.net-webtoepassing

  2. Haversine Fomula met MySQL krijgt locaties in de buurt

  3. Hoe gebruik ik Psycopg2's LoggingConnection?

  4. Afbeeldingen uploaden met behulp van arrays en ophaalfouten