Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/07/2007, 14h15   #1
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
Par défaut Illegal mix of collations

Bonjour,

Ayant une base de donnée avec beaucoup de proc stockées, j'ai fait des scripts cmd pour les copier et les compiler automatiquement.

le probleme c'est que quand je lance mon traitement global j'ai le message d'erreur suivant :

Citation:
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
pour le corriger, il me suffit en general de trouver la (les) proc qui pose(nt) probleme et de les réenregistrer et de les compiler à nouveau.

Est ce que quelqu'un pourrait m'expliquer d'ou vient ce probleme et comment y remédier ?

merci
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 08h29   #2
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
personne a une petite idée ?

car je sais que le probleme vient du charset mais etant donné que cela intervient lorsque j'execute une proc stockée, je ne sais pas quelle variable modifier.

Pour info toutes mes tables sont en latin1_swedish_ci

merci
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 14h52   #3
Membre expérimenté
 
Inscription : septembre 2006
Messages : 685
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 685
Points : 564
Points : 564
Peut-être que le castage de ta chaine en latin pourrait résoudre le problème ?
Xunil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 15h12   #4
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
faire un cast sur tout le code de mes proc stockées ?
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 17h39   #5
Membre expérimenté
 
Inscription : septembre 2006
Messages : 685
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 685
Points : 564
Points : 564
Je ne sais pas, je n'ai jamais eu ce genre d'erreur.
C'était une suggestion.
Xunil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2007, 17h44   #6
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
je reviens sur ce probleme.

J'ai regardé les tutoriaux pour comprendre pourquoi j'ai ce message d'erreur.

La solution serait donc de faire un CONVERT( .. USING latin1) dans toutes mes clauses where.

Mais ce que je trouve bizarre, c'est que si je compile directement mes proc stockées (par l'interface de toad), tout marche correctement par contre en compilant tout automatiquement en faisant :
Code :
1
2
 
mysql -h mon_serveur -p ma_bdd -u utilisateur --password=password <  script.sql
ça marche plus.
mon script ne fait pourtant que concatener les proc stockées en les separant pas un delimiter et il compile tres bien toutes les procedures stockées.


en plus j'ai bien verifié toutes mes tables et la collation est toujours la meme à savoir "latin1_swedish" (ou un truc comme ça)

quelqu'un aurait une explication à ce phénomène ?
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 09h57   #7
Membre expérimenté
 
Inscription : septembre 2006
Messages : 685
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 685
Points : 564
Points : 564
Ne m'engueule pas si je dis encore une connerie, mais y'a des options en ligne de commande sur les jeux de caractères.
Code :
mysql -h mon_serveur -p ma_bdd -u utilisateur --default-character-set=latin1
J'ai essayé chez moi le --default-collation=latin1_swedish_ci, mais ça ne passe pas.
http://dev.mysql.com/doc/refman/5.0/...r-options.html

Peut-être une piste.
Xunil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 10h35   #8
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
je t'engueulerai pas mais au contraire je dirai plutot merci

je regarde tout ça et on verra si ça résoud le probleme.

pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h16.


 
 
 
 
Partenaires

Hébergement Web