IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

latin1_general_ci erreur 1267


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 209
    Par défaut latin1_general_ci erreur 1267
    Bonjour,
    L'aventure continue
    Sur un serveur mutualisé.
    Voici le code d'erreur que je reçois en retour de mes requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PDO::query() [<a href='pdo.query'>pdo.query</a>]: SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation 'like' in monsite.php
    Pourtant, j'ai tout passé en latin1_general_ci :
    • L'entête de la page : <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    • Le charset du fichier ISO...
    • Interclassement pour la connexion MySQL
    • L'interclassement de la base de données
    • L'interclassement de la table et de ses champs

    Les variables du serveur sont :
    • character set client : utf8
    • character set connection latin1_general_ci
    • character set database latin1
    • character set results utf8
    • (Valeur globale) latin1
    • character set server latin1
    • collation server latin1_swedish_ci

    Évidemment je ne peux pas changer les paramètres fondamentaux d'un serveur mutualisé.
    Voyez-vous une astuce ?
    Je pense à utiliser la fonction de MySQL dans chacune de mes requêtes ; je trouve cela un peu lourd toutefois et je ne suis d'ailleurs pas sûr du résultat...
    Merci !

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 209
    Par défaut Seule les procédures stockées génèrent l'erreur !
    Bonjour,
    Je viens de réécrire le code de la procédure stockée en PHP et en SQL. Le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $MyCMD = "SELECT * FROM maBase.Clients 
    WHERE Ville='MONTAUROUX'";		print_r($this->cx['bx_prod']->query($MyCMD)->fetchAll(PDO::FETCH_ASSOC));
    De la même manière, si j'utilise un INSERT cela fonctionne en PHP/SQL et pas avec une procédure stockée où l'enregistrement se fait bien mais 'éèà' devient un truc illisible dans le champ de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $MyCMD  = "INSERT INTO Clients
    (A, B, C, Titre, Nom, Prenom, CAttc, somcommandes, Solde, ad1, ad2, cp, Ville, Tel1, Tel2, Tel3, Fax, Port1, Port2, email1, email2, agas, professions)
    VALUES('65','66','67','Mule','ABCDE','Açèéùà€','100','100','0','990Fondurane','lecoup','83440','Montauroux','1','1','1','1','1','1','jean-louis@bob.net','1','popol','po')";
    return $this->cx['bx_prod']->exec($MyCMD);
    Ce code ne génère aucune erreur et renvoie les bonnes informations.
    J'ai fait le même test avec d'autres procédures stockées : même résultat !
    Je pense que cela devrait nous aider à trouver une piste.
    Merci d'avance !

  3. #3
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    tu as essayé de générer des requêtes en iso aussi au lieu d'utf pour le client?
    tu peux le configurer lors de ta connexion

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 209
    Par défaut
    Merci !
    Toutefois, je ne comprends pas ta réponse. Pourrais-tu me guider ?

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 209
    Par défaut
    Je viens de faire les tests suivants - avec toujours la même erreur, si cela peut donner une piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DELIMITER //
    DROP PROCEDURE IF EXISTS `base`.`cli`//
    CREATE PROCEDURE `base`.`cli`(IN p_id MEDIUMINT)
    BEGIN
      DECLARE v_id MEDIUMINT;
      SET v_id = p_id ;
      SELECT * FROM `base`.`cli`
      WHERE `idClients`=CONVERT(p_id using latin1) collate latin1_swedish_ci;
    END//
    DELIMITER ;
    L'erreur :
    Warning: PDO::query() [pdo.query]: SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (latin1_general_ci,IMPLICIT) for operation '=' in
    PUIS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DELIMITER //
    DROP PROCEDURE IF EXISTS `base`.`cli`//
    CREATE PROCEDURE `base`.`cli`(IN p_id MEDIUMINT)
    BEGIN
      DECLARE v_id MEDIUMINT;
      SET v_id = p_id ;
      SELECT * FROM `base`.`cli`
      WHERE `idClients`=CONVERT(p_id using latin1) collate latin1_general_ci;
    END//
    L'erreur :
    Warning: PDO::query() [pdo.query]: SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (latin1_general_ci,IMPLICIT) for operation '='
    C'est à pleurer !

  6. #6
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    dans la liste de tes charset, tu as encore utf8 pour 2 des configs (client et result) et la collation serveur encore en swedish

    à savoir que la plupart de ces réglages sont accessibles via des set
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    @@nom_variable=...;
    ça permet de changer certains paramètres serveur uniquement pour la connexion en cours (ça n'affecte que l'échange lié au processus courant)

    regarde dans la doc pour trouver les noms des variables...

    par contre, vérifie si tu as pas une pauvre table qui aurait pas les mêmes charset et collation que les autres

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 209
    Par défaut
    Merci !
    Et effectivement j'avais une table miniature dont un champ était en swedish
    Il n'explique pas tout. Ta solution me semble des plus intéressante.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur fréquente avec ASP et IIS
    Par Community Management dans le forum ASP
    Réponses: 2
    Dernier message: 11/02/2004, 22h20
  2. Check Url pour savoir si erreur 404 ou si le site existe
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/08/2002, 13h49
  3. Réponses: 2
    Dernier message: 27/05/2002, 19h46
  4. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    Réponses: 3
    Dernier message: 13/05/2002, 15h05
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo