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 lors de l'exécution d'une procédure stockée , il est prudent d'examiner les causes sous-jacentes.
Le classement joue un rôle essentiel dans MySQL, déterminant le jeu de caractères et règles de tri. Une inadéquation dans les classements entre une table et une colonne référencée dans la clause WHERE peut conduire à cette erreur.
Pour résoudre le problème, spécifiez un classement partagé pour les deux colonnes impliquées dans la comparaison. La clause COLLATE vous permet de remplacer le classement par défaut pour une expression spécifique. Par exemple :
WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs
Cette requête déclenchera toujours l'erreur lorsqu'elle comparera des chaînes avec différents classements. Au lieu de cela, vous devez spécifier explicitement le classement partagé :
SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
Alternativement, l'opérateur BINARY peut être utilisé pour forcer une comparaison binaire, en ignorant les classements :
SELECT * FROM table WHERE BINARY a = BINARY b;
SELECT * FROM table ORDER BY BINARY a;
Attention la conversion de colonnes à des fins de comparaison, comme dans le cas de l'opérateur BINARY, peut avoir un impact sur les performances d'indexation. Reportez-vous à la réponse complète d'Eggyal pour plus d'informations sur les classements MySQL.
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!