Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment résoudre l'erreur Illegal mix of collations (latin1_general_ci,IMPLICIT)

J'ai passé une demi-journée à chercher des réponses à la redoutable erreur "Mélange illégal de classements". J'ai constaté que certaines colonnes de ma base de données n'étaient pas spécifiquement assemblées utf8_unicode_ci . Il semble que mysql ait implicitement assemblé ces colonnes utf8_general_ci .

Plus précisément, l'exécution d'une requête "SHOW CREATE TABLE table1" a généré quelque chose comme ceci :

| tableau1 | CREER TABLE table1 (id int(11) PAS NULL,col1 varchar(4) JEU DE CARACTERE utf8 NON NULL,col2 int(11) NOT NULL, CLÉ PRIMAIRE (photo_id ,tag )) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |

Notez la ligne 'col1' varchar(4) CHARACTER SET utf8 NOT NULL n'a pas de classement spécifié. J'ai ensuite lancé la requête suivante :

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

Cela a résolu mon erreur "Mélange illégal de classements". J'espère que cela pourra aider quelqu'un d'autre.