Bonjour à toutes et à tous,

Quelqu'un aurait-il été déjà confronté à un message d'erreur suivant sous MySQL :

DB Error: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

Comment a-t-il résolu ce problème?

Merci d'avance.
Sophonie.
Salut,

Je ne suis pas persuadé, que ce soit le bon forum pour ce genre de questions, ne t'étonnes donc pas si un modérateur te le fait remarquer ...
Je n'ai pas rencontré cette erreur spécifiquement, mais en tout cas, ca m'a tout l'air d'un problème concernant une base de donnée dans un encodage par défaut genre au hasard latin1_swedish et que ta requête est formaté en utf8, et donc pas bon !!! en gros tu n'as pas le même jeu d'interclassement (collation en anglais). dans ta requête essaye ceci : select column1 COLLATE SQL_Latin1_Swedish_Ci ou un truc du genre ... recherche à partir de ces infos sur le net ...

Si tu passes par un outil style phpMyAdmin, tu dois pouvoir le définir ...

@ +!
Merci.
J'irai faire un tour dans le fichier de conf. de MySQL car tout est en latin1_swedish_ci
sous phpmyAdmin.

Sophonie.
Bonjour,

Je ne pense pas que tu puisses t'en sortir avec la configuration de MySQL avec une base de données existante.
Si tu y arrives, tant mieux, si tu n'y arrive pas, voici ce que je te propose, qui pourra être long et fastidieux s'il y a beaucoup de champs et de tables, mais qui devrait marcher (du moins, c'est ce que j'essaierai si j'étais dans ton cas).

Après avoir effectué une sauvegarde de la base de données
mysqldump -u UTILISATEUR_BASE -pMDP_BASE NOM_BASE > ./nom_sauvegarde.sql
ouvre ta base de données dans phpmyadmin et pour chaque table de ta base de données :
- sélectionne la table
- clique sur l'onglet « Structure »
- pour chaque champ où la colonne « Interclassement » contient « latin1_swedish_ci », cocher (sélectionner) le champ
- cliquer sur l'icône qui ressemble à un crayon et qui s'appelle « modifier »
- pour chaque champ affiché dans cette nouvelle page, dans la colonne « Interclassement », modifie « latin1_swedish_ci » en « utf8_general_ci »
- clique sur « Sauvegarder »

Ensuite, pour vérifier que cela fonctionne, recommence l'opération qui provoquait l'erreur que tu signalais.

Voilà !
EQÇA (Traduction de HTH 😉 )
slobberbone wrote:Je ne suis pas persuadé, que ce soit le bon forum pour ce genre de questions, ne t'étonnes donc pas si un modérateur te le fait remarquer ...
Et.... C'est quoi le bon forum ?
Dionysos wrote:
mysqldump -u UTILISATEUR_BASE -pMDP_BASE NOM_BASE > ./nom_sauvegarde.sql
Je te propose ce petit script pour faciliter la sauvegarde de ta base de données, car bien entendu, il faut faire des sauvegardes fréquentes de celle-ci :
#!/bin/bash
#petit script shell pour sauvegarder ma base de données
HORODATAGE=`date '+%F-%H%m%S'`
UTILISATEUR="nom_utilisateur_de_la_base"
MDP_BASE="mot_de_passe_de_la_base"
NOM_BASE="nom_de_la_base"
REPERTOIRE_SAUVEGARDE="$HOME/répertoire/de/sauvegarde/"
FICHIER_SAUVEGARDE="$NOM_BASE-$HORODATAGE.sql"

if [ ! -d $REPERTOIRE_SAUVEGARDE ]
then
  echo "Le répertoire « $REPERTOIRE_SAUVEGARDE » n'existe pas !"
  echo "La sauvegarde de la base « $NOM_BASE » n'est donc pas possible..."
  exit 1
fi

mysqldump -u $UTILISATEUR -p$MDP_BASE $NOM_BASE > $REPERTOIRE_SAUVEGARDE/$FICHIER_SAUVEGARDE
tar cvjf $REPERTOIRE_SAUVEGARDE/$FICHIER_SAUVEGARDE.tar.bz2 $REPERTOIRE_SAUVEGARDE/$FICHIER_SAUVEGARDE
rm $REPERTOIRE_SAUVEGARDE/$FICHIER_SAUVEGARDE
Tu peux nommer ce script « sauvegarde_base_machin.sh », le rendre exécutable, et surtout illisible par les autres et le groupe car il contient le mot de passe de ta base...
Et.... C'est quoi le bon forum ?
Je dirai celui de mysql ... 😉, non pas que ca ne soit pas intéressant, ou autre, mais il n'y a pas de rapport avec Fedora, c'est tout !

Ceci dit, sympa ton script !
slobberbone wrote:Je dirai celui de mysql ... 😉, non pas que ca ne soit pas intéressant, ou autre, mais il n'y a pas de rapport avec Fedora, c'est tout !
Oui, enfin bon, faut bien pouvoir s'entre-aider entre utilisateurs Fedora, même quand cela n'est pas spécifique à Fedora.
Ceci dit, j'ai oublié de citer le forum de phpdébutant pour les débutants, et les autres, pour ce qui concerne php, mysql, postgresql, html, css, javascript, bref, un peu tout ce qui concerne le web.
slobberbone wrote:Ceci dit, sympa ton script !
Merci 😉
Mais c'est rien d'extraordinaire.
18 jours plus tard
Je viens de me rendre compte qu'il y avait une erreur MONSTRUEUSE dans ce script !!!
Comme quoi, je ne fais pas suffisamment de sauvegarde 😉
Le problème est dans le « calcul » de la date, on utilisait les mois au lieu des minutes 🙁
Ce n'est donc pas :
HORODATAGE=`date '+%F-%H%m%S'`
mais c'est :
HORODATAGE=`date '+%F-%H%M%S'`
C'est donc la version 1.0.1 du script 😉