Maison > base de données > tutoriel mysql > Comment corriger l'erreur « Mélange illégal de classements » de MySQL ?

Comment corriger l'erreur « Mélange illégal de classements » de MySQL ?

DDD
Libérer: 2025-01-10 19:41:47
original
334 Les gens l'ont consulté

How to Fix MySQL's

Dépannage de l'erreur « Mélange illégal de classements » de MySQL

Des ensembles de données volumineux peuvent parfois déclencher l'erreur frustrante de MySQL « Mélange illégal de classements ». Cela se produit lors de la comparaison de données avec des jeux de caractères et des classements incohérents.

Le problème

Considérez cette requête :

<code class="language-sql">SELECT COUNT(*) AS num
FROM keywords
WHERE campaignId = '12'
AND LCASE(keyword) = 'hello again 昔 ã‹ã‚‰ ã‚ã‚‹ å ´æ‰€'</code>
Copier après la connexion

L'exécution de ceci pourrait produire :

<code>Error Number: 1267
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='</code>
Copier après la connexion

Solutions : échappement de chaîne ou modifications d'encodage

Il existe deux approches principales pour résoudre ce problème : échapper à la chaîne problématique ou modifier les encodages de la base de données et des tables.

Méthode 1 : échappement de chaîne (correctif temporaire)

Échapper à la chaîne peut temporairement éviter l'erreur :

<code class="language-sql">SET collation_connection = 'utf8_general_ci';

SELECT COUNT(*) AS num
FROM keywords
WHERE campaignId = '12'
AND LCASE(keyword) = 'hello again \"昔 ã‹ã‚‰ ã‚ã‚‹ å ´æ‰€\"'</code>
Copier après la connexion

Cependant, il s'agit d'une solution de fortune qui pourrait créer des problèmes futurs.

Méthode 2 : modification des encodages de base de données et de table (solution permanente)

Pour un correctif permanent, standardisez votre base de données et vos tables à utiliser utf8_general_ci :

<code class="language-sql">ALTER DATABASE your_database_name CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;</code>
Copier après la connexion

En unifiant votre classement de connexion et vos encodages de base de données/table sur utf8_general_ci, vous garantissez une gestion cohérente des données et éliminez l'incompatibilité de classement. C'est l'approche recommandée.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal