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 :

[MYSQL] et [DBExpress]


Sujet :

Bases de données Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [MYSQL] et [DBExpress]
    Bonjour,

    je travail avec Delphi 2007 et [MYSQL]. Cela fait un moment que je m'entête a essayer de faire fonctionner les composantes [DBExpress] (inclus avec delphi) convenablement. Je travail avec un SqlConnection et plusieurs (SqlDataset, DatasetProvider, ClientDataset) ou (SimpleClientDataset).

    Le problème que je rencontre est que chaque Dataset créer une connexion sur le serveur MySql et après un certain temps le serveur MySql ferme les connexions (60 sec defaut, 24h max). Lorsque le serveur ferme la connexion et que le Dataset fait un post par la suite, j'ai l'erreur "MySql server has gone away". Le problème semble vraiment venir du fait que les objets dbExpress laisse leur connexion ouverte et que le serveur MySql ferme les connexions de sont propre gré...

    Les solutions possibles que j'ai trouvé:
    -Créer un SqlConnection pour chaque Dataset (- ca fait beaucoup d'objets et de paramètres a gérer)

    -Utiliser les SimpleDataset et le InternalConnection (les SimpleDataset sont moin efficace que le trio avec ClientDataset)

    -Fermer la connexion manuellement après chaque utilisation des Dataset

    J'aimerais savoir qu'elle est la meilleur méthode, ce doit être un problème standard, peut-être que je suis passé a coté d'un détail qui changerait tout. Car dans l'utilisation d'un exemple simple avec seulement un ClientDataset les connexions se ferme automatiquement (ce qui serait la solution idéal), c'est avec plusieurs Dataset que les connexions se gate ...

    Je me dis que je ne dois pas être le seul a utilisé (Delphi, MySql, dbExpress) comment font les autres ?

    Merci

    *************************
    Nouveauté 11-nov-2010
    *************************
    J'ai continué mes recherche et appris un peu plus sur le fonctionnement de [DBExpress] et [MYSQL]

    En fait la propriété MaxStmtsPerConn de TSQLConnection qui représente le nombre de maximum de Dataset ouvert permis par le serveur est a 1. Ce qui a pour effet d'utilisé la propriété AutoClone du TSQLConnection et lorsque qu'un 2e ou Xe Dataset est ouvert sur le TSQLConnection la connexion est cloné et ce doit être la le problème. Car avec 1 Dataset la connexion se ferme automatiquement après la requête même si le Dataset reste ouvert et avec plusieurs Datasets toutes les connections restent ouvertes même après la fermeture des Datasets.

    La seul solution trouvé est de faire TSQLConnection.Close après chaque DataSet.Open pour être certain que le serveur ne ferme pas par lui même les connexion et créer l'erreur "MySql server has gone away".

    Si quelqu'un qui a l'habitude de travailler avec [DBExpress] et [MYSQL] pouvait faire des commentaires ce serait très apprécié. Car je trouve ma solution "faire TSQLConnection.Close après chaque DataSet.Open" un peu lourde a géré et peut-être même problématique dans certain cas.

    Merci

  2. #2
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 187
    Points : 90
    Points
    90
    Par défaut
    Hi uapril,

    J'ai connu des problèmes de récupération de variable @@Identity liés à la fermeture intempestive des connexions.

    J'ai résolu (j'espère définitivement) le problème en assignant la valeur False à la propriété TSQLConnection.AutoClone.

    La question que je me pose est de savoir à quelle variable d'environnement MySQL (show variables; ) correspond la valeur 1 retournée par TSQLConnection.MaxStmtsPerConn .



    JJE

Discussions similaires

  1. suprimé champ d'une bdd mysql avec dbexpress builder c++
    Par keusty78 dans le forum C++Builder
    Réponses: 0
    Dernier message: 20/09/2010, 18h02
  2. Autoincrémentation mysql avec DbExpress
    Par colfire_dev dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/01/2008, 09h42
  3. Delphi 7.1, MySQL et dbEXpress sont dans un bateau...
    Par jl_s dans le forum Bases de données
    Réponses: 3
    Dernier message: 30/01/2006, 00h36
  4. [DBexpress][Mysql]Pb de connexion
    Par vincentj dans le forum Bases de données
    Réponses: 11
    Dernier message: 16/06/2004, 23h17
  5. Dbexpress mysql : mot de passe incorrect
    Par nicang dans le forum Bases de données
    Réponses: 7
    Dernier message: 22/04/2004, 15h48

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