Résolution de l'erreur « Mélange illégal de classements » dans MySQL
Lorsque vous tentez d'exécuter une procédure stockée MySQL impliquant une instruction SELECT, vous pouvez rencontrez l’erreur « Mélange illégal de classements ». Ce problème survient en raison de divergences dans le classement de la table et des colonnes comparées ou triées.
Le classement de la table est latin1_general_ci, tandis que la colonne de la clause WHERE utilise latin1_general_cs. Ces classements incompatibles entraînent l'erreur.
Solution 1 : spécifiez un classement partagé à l'aide de la clause COLLATE
Utilisez la clause COLLATE pour spécifier un classement commun pour les colonnes du requête :
WHERE column1 COLLATE latin1_general_ci = column2 COLLATE latin1_general_ci
Solution 2 : Utiliser le BINAIRE Opérateur
Vous pouvez également utiliser l'opérateur BINARY, qui traite les chaînes comme des données binaires :
WHERE BINARY column1 = BINARY column2
Remarque :
Quand en utilisant l'opérateur BINAIRE, gardez à l'esprit qu'il désactive toute indexation potentielle sur la colonne en question.
Pour des informations complètes sur des sujets liés à la collation, reportez-vous à la réponse très perspicace fournie par eggyal dans une discussion similaire.
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!