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

Bases de données Delphi Discussion :

[Delphi 6][MySql 4.1.11][Win XP] - Connection vers DB MySQL


Sujet :

Bases de données Delphi

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [Delphi 6][MySql 4.1.11][Win XP] - Connection vers DB MySQL
    Bonjour,

    Je cherche un moyen de pouvoir me connecter sur un DB MySQL 4.1.11 en Delphi 6 mais les nombreux tutoriels que j'ai trouvé sont valables pour des versions plus anciennes de MySQL ou ne fonctionne carrement pas du tout (et ce n'est pas faute d'avoir essayer).

    Est-ce que quelqu'un aurait un bout de piste a me proposer ?
    Merci pour vos reponses

    Florent

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 925
    Points : 6 040
    Points
    6 040
    Par défaut
    Bonjour et bienvenu sur Developpez....

    En lisant les règles du forum, tu aurais appris la nécessité de fournir des explications complètes si tu souhaites des réponses concrètes...

    Bref, à communiquer:
    1/ quelle version de Delphi ? Perso//entreprise

    2/ quels moyens de connexion as-tu essayé et qui "ne marchent pas"

    3/ quel(s) message(s) d'erreur ?

    4/ MySQL en local ou sur un serveur ?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Re bonjour,

    En lisant les règles du forum, tu aurais appris la nécessité de fournir des explications complètes si tu souhaites des réponses concrètes...
    J'ai lue les regles du forum mais il est tout a fait possible que deux ou trois petites soit passees inapercues. Et il me semble que ma question n'etait pas si vide d'informations.... bref.

    1) Delphi 6 Enterprise

    2) dbexpress et API MySQL

    3) dbexpress : DLL/shared library name not set
    API : debugger exception notification. Violation in class EAccessViolation with message "Access violation at adress 00A9348F in module libmysql.dll"

    4) MySQL en local pour les tests mais prevue sur un serveur pour la mise en production

    Florent

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Fait une recherche sur le forum concernant le mot libmysql.dll et tu trouveras un ou plusieurs postes qui t'expliqueront que selon la version de MYSQL, il faut faire des modifs pour dbexpress.

    Sinon pour un autre moyen de connexion, tu recherches sur google MYODBC et tu utilises les composants ADO.

  5. #5
    Membre chevronné

    Profil pro
    Chef de Projet / Développeur
    Inscrit en
    Juin 2002
    Messages
    611
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de Projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2002
    Messages : 611
    Points : 2 083
    Points
    2 083
    Par défaut
    il y a aussi les composant zeos qui fonctionne très bien avec mysql 4.1 et qui sont plus souple que dbExpress.

    Mais le projet bouge peu ces derniers temps.

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    il y a aussi les composant zeos qui fonctionne très bien avec mysql 4.1 et qui sont plus souple que dbExpress
    J'ai essayer ca aussi, mais impossible d'installer le composant dans Delphi. Dans la doc d'installation il parle des composants .bpl, mais il n'existe que des .dpk qui correspondent aux noms des composants donnes dans la doc, et si j'utilise ses fichiers la, je recois une erreur " is not a valid identifier quand je fais ok.

    Quelqu'un a une idee ?

    Merci d'avance

  7. #7
    Membre chevronné

    Profil pro
    Chef de Projet / Développeur
    Inscrit en
    Juin 2002
    Messages
    611
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de Projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2002
    Messages : 611
    Points : 2 083
    Points
    2 083
    Par défaut
    Si tu ne sais pas ce que sont des BPL et des DPK, c'est, en effet, plus compliqué pour installer un composant.

    Pour faire simple, un BPL c'est un composant compilé.
    Les DPK sont des projets (des sources) de type "composant"

    Zeos étant livré en source ( comme 99% des composant gratuit ), il va falloir compiler les DPK pour obtenir des BPL.

    Après, comme, par défaut, tu n'as pas à joindre des BPL à ton EXE, peu importe où Delphi ces BPL. (ça change en fonction des versions)

    Donc pour installer Zeos :

    Dans les options de Delphi (menu Outils > Option d'environement)
    définie les chemins de "bibliothèque" et "Chemin à Parcourir" sur les chemins

    X:\Zeos\src
    X:\Zeos\src\core
    X:\Zeos\src\parsesql
    X:\Zeos\src\ etc ... tous les sous-chemins de src

    Ferme tous les projets en cours (Fichiers > Tout Fermer)
    Fait "Fichier > Ouvrir un projet"
    Change le filtre pour faire apparaitre les DPK au lieu des DPR, DPG

    Sélectionne les DPK correspondant à ta version de Delphi dans l'ordre indiqué par la Doc. Cad : ZCore, ZParseSql, ZPlain, ZDbc, ZComponent

    Pour chacun d'entre eux, fait compiler puis Installer.
    Lors de l'installation de ZComponent, Delphi te signalera la mise en place de nouveau composants.

    Attention Zeos va jusqu'à MySql 4.1 pas MySQL 5.

    Sinon quelque soit les outils utilisés :
    tu peux toujours utiliser un vieux libmysql.dll (ver 4.0 voir 3.23) qui va être compatible avec tes vieux composants Delphi , et installer un serveur dernière version (4.0 ou 5.0 béta).
    En effet, les versions récentes du serveur MySQL reconnaissent des clients plus anciens.
    C'est pas top top, mais c'est ce que j'ai fait lors du passage de la 3.23 à la 4. Mes composants ne reconnaissaient pas encore libmysql.dll version 4, j'installait le serveur 4, mais des clients 3.23

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2002
    Messages : 35
    Points : 38
    Points
    38
    Par défaut Aie aie aie...
    Bonjour !

    Je prends le train en marche...
    J'ai procédé comme ci-dessus mais lorsque je double-clique sur la propriété connected du composant TZConnection, je me prends le message suivant :

    SQL Error : Client does not support authentication protocol requested by server; consider upgrading MYSQL client.
    Or je viens d'installer MYSQL Server 4.1.

    D'ou vient ce client "attardé" ?

    Quelqu'un a-t-il une piste de recherche ?

    Merci d'avance,

    Michel[/quote]

  9. #9
    Membre chevronné

    Profil pro
    Chef de Projet / Développeur
    Inscrit en
    Juin 2002
    Messages
    611
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de Projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2002
    Messages : 611
    Points : 2 083
    Points
    2 083
    Par défaut
    3 pistes :

    1) le composant TZConnexion possède une property protocol.
    Il faut que cette property corresponde à la version du client installé.

    2) zeos.inc permet de mettre en place un système de dll nommée
    Si on entre le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zcnx.protocol := 'mysql-4.1' ;
    le programme va d'abord chercher une dll nommée : libmysql41.dll au lieu du libmysql.dll standard (si la version nommée est absente, il se rabat sur le nom standard).

    Cette option est très utile et évite les conflit avec d'autres logiciels ou installations anciennes.
    Personnellement, je met toujours un libmysql41.dll dans le dossier de mon EXE. Ca évite les pb.

    3) les versions récentes de MySQL implémente un nouvel algorithme de hashage des mots de passe.
    Donc, si on utilise la fonction PASSWORD('mot_de_passe') pour définir le mot de passe sur une version 4.1, un client plus ancien ne pourra pas se connecter.
    Pour éviter ce pb, il faut utliser la fonction OLD_PASSWORD('mot_de_passe').
    Ce faisant, MySQL 4.1 utilisera l'ancien système de hashage des mot de passe. Les anciens clients arriveront alors à se connecter.

    A noter que l'ancien système utilise des clés moins longues et qu'il est donc plus facilement crackable. Mais, il ne faut rien exagérer, c'est très relatif.

    Au vu de l'erreur, je pense que ton pb peut-être résolu par le 3), j'aurais du le mettre en 1) ;-)

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2002
    Messages : 35
    Points : 38
    Points
    38
    Par défaut En effet !
    En effet !
    Le 3) etait bien le 1) mais le fait qu'il soit en 3) ne m'a pas gèné ;-)

    (Mais le 2) devrait venir après le 3) qui devient 1), le 1) devenant 2), le 2) devient 3) ! )

    Un grand merci pour le coup de main !

    Michel

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2002
    Messages : 35
    Points : 38
    Points
    38
    Par défaut heu...
    Heu...
    Nouveau petit problème :

    Lorsque j'utilise le composant TZReadOnlyQuery en faisant un Cut&Paste d'une query généré par le QueryBrowser, no problemo !
    Le query est assez "bizare" :
    SELECT * FROM ´myschema´.´mytable´ m
    mais ça passe...

    Lorsque j'utilise un composant TZTable, les choses se passent moins bien :

    SQL Error: You have an error in your SQL syntax; check the manual that correspond... bla bla bla bla
    Je suppose que c'est lié au étranges quotes utilisés pour les noms de schéma et de table. En "chipotant" avec le querybrowser, je me rends compte maintenant que mes noms de schéma et de table sont entourés de guillemets maintenant et que plus rien ne passe...

    What's wrong ?

    Merci d'avance,

    Michel

    PS :Un query du genre
    SELECT * FROM mytable
    génère la même erreur...

  12. #12
    Membre chevronné

    Profil pro
    Chef de Projet / Développeur
    Inscrit en
    Juin 2002
    Messages
    611
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de Projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2002
    Messages : 611
    Points : 2 083
    Points
    2 083
    Par défaut
    Sincèrement, je n'utilise jamais le composant table.

    Les guillemets sont totalement inutiles.
    Et comme tu as probablement précisé la base dans le composant TZConnexion, inutile de le représiser à chaque requête.

    Perso mes requête ressemble à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ma_table WHERE ...
    De quel querybrowser parles-tu ?

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2002
    Messages : 35
    Points : 38
    Points
    38
    Par défaut Aie aie...
    Je viens de refaire un test en créant une table à la main et cela fonctionne...

    Bizare...

    J'ai trouvé QueryBrowser sur le site de MySQL mais je ne le trouve pas extraordinaire...

    Enfin... Mes problèmes semblent (momentanément) résolus...

    Bon week-end !

    Michel

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut
    bonjour, je bloque a l'etape de connection a mon serveur mysql avec zeos.

    "3) les versions récentes de MySQL implémente un nouvel algorithme de hashage des mots de passe.
    Donc, si on utilise la fonction PASSWORD('mot_de_passe') pour définir le mot de passe sur une version 4.1, un client plus ancien ne pourra pas se connecter.
    Pour éviter ce pb, il faut utliser la fonction OLD_PASSWORD('mot_de_passe').
    Ce faisant, MySQL 4.1 utilisera l'ancien système de hashage des mot de passe. Les anciens clients arriveront alors à se connecter.
    "

    rien a faire, je passe en mode old password sur le serveur , mais toujours pas possible de se connecter, "SQL Error : Client does not support authentication protocol requested by server; consider upgrading MYSQL client."

    une idée?
    thx

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2002
    Messages : 35
    Points : 38
    Points
    38
    Par défaut
    Une piste :
    Le fait de change le mode ne change pas le stockage des mots de passe existants.
    Il faut donc redéfinir le mot de passse de l'utilisateur qui se connecte. Il sera alors stocké en "old password" et tout devrait rentrer dans l'ordre...
    Bonne chance,

    Michel

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut
    apres plusieurs modifs de config etc... ca a fini par marcher, je ne sais pas si le pb bloquant etait le compte crée avant les modifs, en tout cas ca marche maintenant, merci
    a mon avis je me suis aussi fait avoir par mysql administrator, il y avait une case a cocher pour "disable secure authentification" , qui en fait mettait en place l'authentification securisée (a moins que je me sois embrouillé au point de ne plus rien comprendre a ce que j'ai fait ) ... rien ne vaut la conf a la main dans le fichier ini

Discussions similaires

  1. [MYSQL] [DELPHIXE] EOLeException AdoQuery Win 7 64 bits
    Par Eagle dans le forum Bases de données
    Réponses: 12
    Dernier message: 24/10/2012, 11h39
  2. MySQL 5.1 Instances Win XP
    Par Big Al dans le forum Installation
    Réponses: 0
    Dernier message: 02/02/2010, 22h07
  3. Réponses: 5
    Dernier message: 18/10/2007, 15h40
  4. [MySQL 5.0 + C++ WIN 32] Où est libmysqld?
    Par Jean_Benoit dans le forum Installation
    Réponses: 5
    Dernier message: 12/09/2006, 22h43
  5. Mysql ERROR 2002: Can't connect to local MySQL
    Par Michel dans le forum Réseau
    Réponses: 2
    Dernier message: 17/01/2004, 19h35

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