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

WinDev Discussion :

[Accès natif Mysql]Unicode: plantage requête avec caractère accentué.. [WD17]


Sujet :

WinDev

  1. #1
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut [Accès natif Mysql]Unicode: plantage requête avec caractère accentué..
    Bonjour

    Soit en Wx17
    - une base de données Mysql créee en 5.1.34 pour être certain que l'accès natif de PC-Soft soit fonctionnel
    - une table applicationservice
    - cette table peuplée
    - cette table importée dans l'analyse
    - une connexion via l'accès natif

    Je veux passer une requête qui contient un caractère accentué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Marequete est une chaîne
     
    Marequete="UPDATE `applicationservice` SET `serviceDescription` = 'View messages types a é' WHERE `applicationServiceId`=1"
    SI PAS HExécuteRequêteSQL("toto",MaConnexion1,hRequêteSansCorrection,Marequete) ALORS
    	Trace(HErreurInfo(hErrComplet))
    FIN
    que je modifie ma chaine de connexion avec :
    ou pas

    je plante systématiquement ...

    J'ai également essayé de passer le projet en unicode ou pas

    Que s'est-il passé ?
    Erreur de l'accès natif MySQL.
    Numéro d'erreur = 22

    L'erreur suivante a été renvoyée par la base données <localhost> :
    Numéro d'erreur = <1366>.
    Message d'erreur :
    Incorrect string value: '\xE9' for column 'serviceDescription' at row 1

    Code erreur : 73001
    Niveau : erreur non fatale (EL_ONRETURN)
    Code erreur WD55 : 3001

    Dump de l'erreur du module 'WD170HF.DLL' (17.0.185.0).
    Identifiant des informations détaillées (.err) : 72801
    Informations de débogage :
    IEWDMSQL=100.23
    Module=<WDMSQL>
    Version=<17.0.29.0>
    Couche client : C:\Windows\system32\LIBMYSQL.DLL
    Provider : WinDevMySQL
    Utilisateur : root
    Source de données : localhost
    Base de données : test00w
    Timeout de connexion : 30
    Timeout de commande : 30
    Unicode supporté : 0
    Code page du WL : 1252
    Code page de la connexion : 1252
    Requête exécutée sur le serveur <localhost>, base de données <test00w>, utilisateur <root> :
    UPDATE `applicationservice` SET `serviceDescription` = 'View messages types a é' WHERE `applicationServiceId`=1
    Informations supplémentaires :
    EIT_BASECODE : <1366>
    EIT_INFOCLIENT : <4.0.18>
    EIT_INFOSERVEUR : <5.1.34-community>
    EIT_NATIVECODE : <22>
    EIT_LOGICALTABLENAME : <toto>
    Ce qui m'embête un peu c'est que (Unicode supporté : 0) dans la trace ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE DATABASE `test00w` /*!40100 DEFAULT CHARACTER SET utf8;
    CREATE TABLE `applicationservice` (
      `applicationServiceId` int(11) NOT NULL,
      `alias` varchar(35) DEFAULT NULL,
      `serviceDescription` varchar(255) DEFAULT NULL,
      `serviceName` varchar(35) DEFAULT NULL,
      `endEffectivityValue` datetime DEFAULT NULL,
      `instanceCreatedValue` datetime DEFAULT NULL,
      `startEffectivityValue` datetime DEFAULT NULL,
      PRIMARY KEY (`applicationServiceId`),
      UNIQUE KEY `externalIdx` (`serviceName`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    INSERT INTO applicationservice(`applicationServiceId`,`alias`,`serviceDescription`,`instanceCreatedValue`) VALUES("1", "MsgView", "View messages types",now());
    INSERT INTO applicationservice(`applicationServiceId`,`alias`,`serviceDescription`,`instanceCreatedValue`) VALUES("2", "EDIPass", "EDI Pass interface process",now());
    D'avance, merci pour votre aide car je suis totalement dans la panade et j'espère que j'ai une grosse merde dans les yeux ...

  2. #2
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Je viens de faire un essai en reproduisant ton environnement et je n'ai pas d'erreur.

    Windev 17 et MySQL 5.1.34. L'interclassement que j'ai utilisé est utf8_general_ci. N'étant pas un pro de MySQL je ne peux garantir que c'est le même que le tien.

    Peut être y a t'il un conflit sur la dll libmySQL.dll que Windev utilise et qu'il ne prend pas la bonne.

    Essaye en ligne de commande de taper :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where libmySQL.dll
    celà va t'indiquer quelle est la dll utilisé.

    et vérifie que la dll qui est donné en résultat de cette commande soit bien celle de MySQL 5.1.34. Celle que Windev utilise chez moi est daté du 01/04/2099 à 16:53 et pèse 2304 Ko .

    Au pire recherche toutes les dll du type libmySQL.dll, supprime les toutes, réinstalle MySQL.

    [edit]Dans ton dump d'erreur il est précisé : Couche client : C:\Windows\system32\LIBMYSQL.DLL, vérifie donc cette dll en priorité, il est fort possible que cette dll soit le reste d'une précédente installation de MySQL dans une autre version, et vu le message 'EIT_INFOCLIENT : <4.0.18>', j'aurais même tendance à dire qu'il est probable que ce soit une dll d'accès à MySQL 4.0.18 ^^

  3. #3
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Grand merci pour ce test et ta réponse. Cela me rassure considérablement et je vais vérifier cela. Je reviens vers toi demain pour t'informer. Et je vais passer une soirée plus sereine


    Citation Envoyé par DelphiManiac Voir le message
    Je viens de faire un essai en reproduisant ton environnement et je n'ai pas d'erreur.

    Windev 17 et MySQL 5.1.34. L'interclassement que j'ai utilisé est utf8_general_ci. N'étant pas un pro de MySQL je ne peux garantir que c'est le même que le tien.

    Peut être y a t'il un conflit sur la dll libmySQL.dll que Windev utilise et qu'il ne prend pas la bonne.

    Essaye en ligne de commande de taper :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where libmySQL.dll
    celà va t'indiquer quelle est la dll utilisé.

    et vérifie que la dll qui est donné en résultat de cette commande soit bien celle de MySQL 5.1.34. Celle que Windev utilise chez moi est daté du 01/04/2099 à 16:53 et pèse 2304 Ko .

    Au pire recherche toutes les dll du type libmySQL.dll, supprime les toutes, réinstalle MySQL.

    [edit]Dans ton dump d'erreur il est précisé : Couche client : C:\Windows\system32\LIBMYSQL.DLL, vérifie donc cette dll en priorité, il est fort possible que cette dll soit le reste d'une précédente installation de MySQL dans une autre version, et vu le message 'EIT_INFOCLIENT : <4.0.18>', j'aurais même tendance à dire qu'il est probable que ce soit une dll d'accès à MySQL 4.0.18 ^^

  4. #4
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Citation Envoyé par DelphiManiac Voir le message
    Je viens de faire un essai en reproduisant ton environnement et je n'ai pas d'erreur.

    Windev 17 et MySQL 5.1.34. L'interclassement que j'ai utilisé est utf8_general_ci. N'étant pas un pro de MySQL je ne peux garantir que c'est le même que le tien.

    Peut être y a t'il un conflit sur la dll libmySQL.dll que Windev utilise et qu'il ne prend pas la bonne.

    Essaye en ligne de commande de taper :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where libmySQL.dll
    celà va t'indiquer quelle est la dll utilisé.

    et vérifie que la dll qui est donné en résultat de cette commande soit bien celle de MySQL 5.1.34. Celle que Windev utilise chez moi est daté du 01/04/2099 à 16:53 et pèse 2304 Ko .

    Au pire recherche toutes les dll du type libmySQL.dll, supprime les toutes, réinstalle MySQL.

    [edit]Dans ton dump d'erreur il est précisé : Couche client : C:\Windows\system32\LIBMYSQL.DLL, vérifie donc cette dll en priorité, il est fort possible que cette dll soit le reste d'une précédente installation de MySQL dans une autre version, et vu le message 'EIT_INFOCLIENT : <4.0.18>', j'aurais même tendance à dire qu'il est probable que ce soit une dll d'accès à MySQL 4.0.18 ^^
    Bonjour,

    Bravo, c'était bien cela : la dll dans le répertoire windows n'était pas celle attendue par l'accès natif Mysql de PCSoft
    J'y ai déposé celle disponible dans le bin de la 5.1.34 et tout fonctionne à merveille :

    Module=<WDMSQL>
    Version=<17.0.29.0>
    Couche client : C:\Windows\system32\LIBMYSQL.DLL
    Provider : WinDevMySQL
    Utilisateur : root
    Source de données : localhost
    Base de données : eqp00w
    Timeout de connexion : 30
    Timeout de commande : 30
    Unicode supporté : 1
    Code page du WL : 1252
    Code page de la connexion : UTF-8
    Requête exécutée sur le serveur <localhost>, base de données <eqp00w>, utilisateur <root> :
    UPDATE `applicationservice` SET `serviceDescription` = 'View messages types a é' WHER `applicationServiceId`=1
    Informations supplémentaires :
    EIT_BASECODE : <1064>
    EIT_INFOCLIENT : <5.1.34>
    EIT_INFOSERVEUR : <5.1.34-community>
    EIT_NATIVECODE : <22>
    EIT_LOGICALTABLENAME : <toto>
    j'ai enlevé le e terminal du where pour avoir ce plantage
    Unicode supporté : 1
    Code page de la connexion : UTF-8
    EIT_INFOCLIENT : <5.1.34>

    Parfait.

    A mes moments perdus, j'essaierai de voir si une version plus récente de Mysql est supportée par l'accès natif, parce que 5.1.34 date un peu quand même...

    Grand merci encore.

  5. #5
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Tant mieux que ce ne soit que cela

    Concernant les versions de MySQL supportées officiellement par Windev, seule les versions 3.23x à 5.1.34. sont supportées et ce même en Windev 18.

    Tester une version plus récente pourquoi pas, mais je pense que c'est jouer avec le feu !!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/02/2015, 03h24
  2. [WD17] Problème avec Accès natif mysql
    Par aurabarth dans le forum WinDev
    Réponses: 8
    Dernier message: 22/08/2013, 19h04
  3. [WD17] Bonne gestion de HsurErreur avec l'accès natif mysql ?
    Par Christophe Charron dans le forum WinDev
    Réponses: 1
    Dernier message: 12/03/2013, 13h29
  4. Réponses: 11
    Dernier message: 21/05/2012, 12h42
  5. [WD10] Connexion avec l'accès natif MySQL
    Par dj-julio dans le forum WinDev
    Réponses: 5
    Dernier message: 20/02/2012, 12h38

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