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.