Maison >base de données >tutoriel mysql >Comment résoudre les erreurs « Mélange illégal de classements » dans MySQL ?

Comment résoudre les erreurs « Mélange illégal de classements » dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-17 06:44:03820parcourir

How to Resolve

Mélange de classements dans MySQL

Dans MySQL, une erreur peut se produire lors de la tentative de comparaison ou d'opération sur des valeurs avec des classements différents. Un exemple courant est le "Mélange illégal de classements (utf8_unicode_ci,IMPLICIT) et (utf8_general_ci,IMPLICIT) pour l'opération '='".

Comprendre les classements

Un classement détermine la manière dont les caractères sont triés et comparés. MySQL prend en charge différents classements, utf8_unicode_ci et utf8_general_ci étant des choix courants.

Erreurs de classement

L'erreur se produit lorsqu'une opération tente de comparer ou de manipuler des valeurs avec différents classements. Cela peut se produire en raison d'incohérences dans les paramètres de classement des tables, des champs ou des procédures stockées.

Résoudre le problème

Pour résoudre ce problème, il existe quatre options principales :

Option 1 : Spécifier le classement pour Variables

  • Ajoutez le mot-clé COLLATE aux variables d'entrée, telles que SET @rUsername = 'aname' COLLATE utf8_unicode_ci;.

Option 2 : Spécifiez le classement dans la clause WHERE

  • Ajouter le mot-clé COLLATE de la clause WHERE, tel que WHERE users.username = rUsername COLLATE utf8_unicode_ci.

Option 3 : Spécifier le classement dans les paramètres de procédure stockée

  • Ajoutez le mot-clé COLLATE à la définition du paramètre IN dans la procédure stockée, telle que IN rUsername VARCHAR(24) COLLATE utf8_unicode_ci.

Option 4 : Modifier le classement des tables

  • Modifier le classement du champ en question, par exemple ALTER TABLE utilisateurs CARACTER SET utf8 COLLATE utf8_general_ci;.

Recommandation

Il est recommandé d'utiliser utf8mb4/utf8mb4_unicode_ci comme méthode de jeu de caractères/collage préférée, car elle offre la prise en charge la plus complète pour Caractères Unicode.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn