PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → [WD17] Accès natif Mysql et unicode ...
[WD17] Accès natif Mysql et unicode ...
Débuté par xof, 02 mar. 2013 16:43 - 4 réponses
Membre enregistré
282 messages
Posté le 02 mars 2013 - 16:43
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é :

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 :
WD Unicode Support = 0
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 ...

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 ...


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());




--
Christophe Charron

http://xsoftware.fr
Membre enregistré
282 messages
Posté le 03 mars 2013 - 11:47
Bonjour,
je me réponds :

Il s'agissait d'une mauvaise version de libmysql.dll dans le répertoire windows.
Comme j'ai 3 serveurs mysql de différentes versions qui tournent sur ma machine et que, a priori, les autres programmes les utilisant savent faire la part des choses ...
Bref, en déposant la libmysql de la version 5.1.34 dans le répertoire windows, tout fonctionne.

Voir ici pour tous les détails : http://www.developpez.net/forums/d1315410/environnements-developpement/windev/acces-natif-mysql-unicode-plantage-requete-caractere-accentue/

Au fait, la limite 5.1.34 est-elle toujours vraie ? En Wx17, en Wx18 ?

--
Christophe Charron

http://xsoftware.fr
Membre enregistré
58 messages
Posté le 03 mars 2013 - 19:32
pour être sûr d'avoir la bonne version libmysql.dll il faut la livrer avec l'appli, dans le repertoire de l'appli cliente.

--
MacT
Posté le 04 mars 2013 - 10:05
Toutim a exposé le 4/03/2013 :
pour être sûr d'avoir la bonne version libmysql.dll il faut la livrer avec
l'appli, dans le repertoire de l'appli cliente.


Sauf erreur de ma part, le libmysql.dll ne peut pas être livré dans un
package avec le logiciel. Il doit être téléchargé par le client.
Membre enregistré
58 messages
Posté le 16 mars 2013 - 17:51
si si

--
MacT