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

Sådan løses fejl ved ulovlig blanding af sammenstillinger (latin1_general_ci,IMPLICIT).

Jeg har brugt en halv dag på at søge efter svar på den frygtede fejl "Ulovlig blanding af sammenstillinger". Jeg fandt ud af, at nogle kolonner i min database ikke var specifikt sorteret utf8_unicode_ci . Det ser ud til, at mysql implicit har samlet disse kolonner utf8_general_ci .

Konkret udsendte kørsel af en 'VIS OPRET TABLE tabel1'-forespørgsel noget i stil med følgende:

| tabel1 | OPRET TABEL table1 (id int(11) IKKE NULL,col1 varchar(4) CHARACTER SET utf8 NOT NULL,col2 int(11) IKKE NULL,PRIMÆR NØGLE (photo_id ,tag )) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |

Bemærk linjen 'col1' varchar(4) CHARACTER SET utf8 NOT NULL har ikke angivet en sortering. Jeg kørte derefter følgende forespørgsel:

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

Dette løste min "Ulovlige blanding af sorteringer"-fejl. Håber dette kan hjælpe en anden derude.



  1. MySQL-case med indsæt og opdatering

  2. pgbouncer - lukker fordi:uren server på hver forbindelse

  3. Sådan sætter du en værdi i flere kategorier

  4. Hvorfor køres PHP-koden før HTML?