Dépannage de l'erreur « Mélange illégal de classements » dans MySQL
Lorsque vous rencontrez l'erreur « Mélange illégal de classements » dans MySQL, cela indique souvent une incompatibilité dans les classements lors de la comparaison ou de la combinaison de chaînes. Cela se produit lorsque des données avec des jeux de caractères et des règles de classement différents sont mélangées, ce qui entraîne l'erreur.
Pour résoudre ce problème, il est nécessaire de spécifier un classement partagé pour les colonnes comparées ou sélectionnées. Ceci peut être réalisé à l'aide de la clause COLLATE, qui vous permet de spécifier le classement à utiliser dans une requête.
Par exemple, pour résoudre l'erreur dans le scénario donné, vous pouvez utiliser la requête suivante :
SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
Cette requête garantit que la colonne clé est triée en utilisant le classement latin1_general_ci, correspondant au classement de la table.
Une autre option consiste à utiliser le Opérateur BINARY, qui convertit les chaînes au format binaire avant comparaison. Il s'agit d'un raccourci pour CAST(str AS BINARY) et peut être utilisé comme suit :
SELECT * FROM table WHERE BINARY a = BINARY b;
En convertissant les valeurs en binaire, toutes les différences dans les règles de classement sont ignorées, permettant une comparaison correcte.
Il est important de noter que la conversion de valeurs en binaire peut entraîner l'ignorance des index de ces colonnes. Pour des informations plus détaillées, reportez-vous à la réponse hautement recommandée fournie par eggyal pour ce problème spécifique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!