sql >> Databasteknik >  >> RDS >> Mysql

Så här löser du fel med olaglig blandning av sammanställningar (latin1_general_ci,IMPLICIT).

Jag har ägnat en halv dag åt att leta efter svar på det fruktade felet "Olaglig blandning av sammanställningar". Jag upptäckte att vissa kolumner i min databas inte var specifikt sorterade utf8_unicode_ci . Det verkar som att mysql implicit har sammanställt dessa kolumner utf8_general_ci .

Närmare bestämt, att köra en "VISA CREATE TABLE table1"-fråga gav något i stil med följande:

| tabell1 | SKAPA TABELL table1 (id int(11) NOT NULL,col1 varchar(4) CHARACTER SET utf8 NOT NULL,col2 int(11) INTE NULL, PRIMÄRNYCKEL (photo_id ,tag )) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |

Notera raden 'col1' varchar(4) CHARACTER SET utf8 NOT NULL har ingen angiven sortering. Jag körde sedan följande fråga:

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

Detta löste mitt "Olagliga blandning av sammanställningar"-fel. Hoppas detta kan hjälpa någon annan där ute.



  1. Gör SQL Server-prestanda lätt

  2. MySQL Fire-And-Forget INFOGA / UPPDATERA / DELETE - mysql_unbuffered_query rekommenderas att använda?

  3. Postgresql-fråga på 10 sekunder

  4. Flera sätt att ta bort dubbletter från SQL-tabeller