sql >> Databáze >  >> RDS >> Mysql

Jak vyřešit chybu Nelegální mix porovnávání (latin1_general_ci,IMPLICIT)

Strávil jsem půl dne hledáním odpovědí na obávanou chybu „Illegal mix of collations“. Zjistil jsem, že některé sloupce v mé databázi nebyly konkrétně seřazeny utf8_unicode_ci . Zdá se, že mysql implicitně porovnal tyto sloupce utf8_general_ci .

Konkrétně spuštění dotazu „SHOW CREATE TABLE table1“ vygenerovalo něco jako následující:

| tabulka1 | CREATE TABLE table1 (id int(11) NOT NULL,col1 varchar(4) CHARACTER SET utf8 NOT NULL,col2 int(11) NOT NULL,PRIMÁRNÍ KLÍČ (photo_id ,tag )) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |

Všimněte si řádku 'col1' varchar(4) CHARACTER SET utf8 NOT NULL nemá zadané řazení. Poté jsem spustil následující dotaz:

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

Tím se vyřešila moje chyba „Illegal mix of collations“. Doufám, že to pomůže někomu dalšímu.



  1. Změna velikosti obrázku PHP

  2. Vzdálenost mezi 2 BODY v Postgis v srid 4326 v metrech

  3. Tabulka hodnotná funkce Killing My Query Performance

  4. Chyba syntaxe PHP PDO nebo porušení přístupu:1064 při vložení