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 :

Erreur Has gone away avec Delphi et MySQL


Sujet :

Bases de données Delphi

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut Erreur Has gone away avec Delphi et MySQL
    j'ai une application Delphi qui travaille avec une base MySQL.
    La connexion s'effectue via ADODB.

    En local tout fonctionne parfaitement.
    Si je travaille su la base située sur le serveur Internet j'obtiens de façon aléatoire le message Server Has gone away

    La contrainte que m'impose l'hébergeur est d'ouvrir ma connexion à chaque requete et de refermer ensuite.
    Voici mon code avant de passer la requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       // par précaution si la laison est restée ouverte
             While DM_ADOConnection.Connected Do Begin
             DM_ADOConnection.Close;
             Application.ProcessMessages;
             Sleep(3);
       End;
       DM_ADOConnection.Open;
       While Not DM_ADOConnection.Connected Do Begin
             Application.ProcessMessages;
             Sleep(3);
       End;
    une fois l'information récupérée je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             DM_ADOConnection.Close;
    De ce que j'ai lu sur les forum ce message est lié soit à la taille des informations rapportées par la requete ou au fait que je fais une transactions SQL sur une connexion fermée.
    Vu que je ramène à chaque fois une seule ligne d'information avec une dizaine de champs je ne pense pas que ce soit le premier cas.

    Je voudrais savoir si quelqu'un a déjà rencontré ce problème

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Je ne répondrais directement à ta question, je connais très peu MySQL.

    Mais ceci me chiffonne: le Open ne devrait-il pas être dans ta boucle?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       While Not DM_ADOConnection.Connected Do Begin
             DM_ADOConnection.Open;   // plutôt ici !!!?
             Application.ProcessMessages;
             Sleep(3);
       End;
    @+ Claudius

  3. #3
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    Pourquoi avoir fait des 'while' et pas juste un simple if ? Surtout que ton sleep(3) c'est court (3 milisecondes).

    Sinon ton message à lieu sur quelle ligne ?

    et +1 pour la remarque de Cl@udius

    Attention le .NET sur PDA peut causer des chutes de cheveux

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    J'ai fait un While pour pouvoir, le cas échéant, recommencer
    Par contre avoir mis le Open hors de la boucle je suis un âne. J'ai corrigé.

    Mon problème subsiste. Mes requêtes sont très courtes (elles portent sur une seule table, le where porte sur une clé d'index) et elles ne ramènent moins de trente lignes, voire une seule dans le cas des modifications.
    L'explication données par l'hébergeur (tomber en timeout) me semble erronnée. Le message intervient très vite.

Discussions similaires

  1. [MySQL] Erreur 2006 Mysql server has gone away
    Par madone dans le forum PHP & Base de données
    Réponses: 24
    Dernier message: 11/12/2014, 11h30
  2. erreur #2006 - MySQL server has gone away
    Par darknico dans le forum Administration
    Réponses: 1
    Dernier message: 13/11/2009, 11h43
  3. [MySQL] Erreur : MySQL server has gone away
    Par Invité dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 26/06/2009, 12h44
  4. Réponses: 3
    Dernier message: 13/03/2009, 13h23
  5. MySQL server has gone away
    Par maple dans le forum Installation
    Réponses: 3
    Dernier message: 04/05/2006, 11h30

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