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

Connexion aux bases de données Firebird Discussion :

FireBird et deadlock


Sujet :

Connexion aux bases de données Firebird

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Points : 225
    Points
    225
    Par défaut FireBird et deadlock
    Bonjour,

    J'en ai déja parlé dans une autre discussion mais pas dans le détails.

    Voici mon problème j'ai une application en reseau (Firebird superserver).

    Et de temps en temps j'ai un problème de deadlock dont voici le message d'erreur :
    05/09/2006 11:08:13 - NUMEROTEUR.INIT_GET_NUM - deadlock - - update conflicts with concurrent update
    Je ne comprends pas pourquoi j'ai cette erreure, pour information voici le code de mon application sur l'initialisation de des composants IB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    *Pour le TIBDataBase
    --------------------
         My_DATABASE:=TIBDataBase.create(Nil);
         My_DATABASE.DatabaseName := PTR_WORK_QUERY.REPERTOIRE_BDD;
         My_DATABASE.SQLDialect := 3;
         My_DATABASE.Params.Clear;
         My_DATABASE.Params.Add('user_name=SYSDBA');
         My_DATABASE.Params.Add('password=masterkey');
         My_DATABASE.LoginPrompt := false;
         My_DATABASE.Connected := true;
     
    *Pour le TIBTransaction
    --------------------------
         MY_SESSION_TRANSACTION:=TIBTransaction.create(Nil);
         MY_SESSION_TRANSACTION.DefaultDatabase := My_DATABASE;
     
    *Pour le TIBQUERY
    --------------------------
         MY_QUERY.Database:=  My_DATABASE ;
         MY_QUERY.Transaction := MY_SESSION_TRANSACTION;
         MY_QUERY.Close;
         MY_QUERY.SQL.Clear;

    Merci de votre aide.
    Cordialement
    QAYS

  2. #2
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    ça ne suffit pas vraiment comme info
    et le meilleur endroit pour ça est surement le forum Delphi, il y a même un sous forum spécial base de données
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Points : 225
    Points
    225
    Par défaut
    Merci je vais voir

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 56
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par QAYS
    *Pour le TIBTransaction
    --------------------------
    MY_SESSION_TRANSACTION:=TIBTransaction.create(Nil);
    MY_SESSION_TRANSACTION.DefaultDatabase := My_DATABASE;

    *Pour le TIBQUERY
    --------------------------
    MY_QUERY.Database:= My_DATABASE ;
    MY_QUERY.Transaction := MY_SESSION_TRANSACTION;
    [/CODE]
    Il est là ton problème, on ne fait JAMAIS de transaction globale commun à tous les objets QUERY de l'application. C'est simple : JAMAIS.

    S'il faut expliquer pourquoi je peux aussi, mais avant va faire un tour là :

    http://firebird-fr.eu.org/article.php3?id_article=39

    Ca explique à quoi sert un SGBD (Système de Gestion de Base de Données)... et pourquoi un imbécile à pondu cette idée géniale qu'est le concept de "Transaction".

  5. #5
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    pierreY je n'ai pas bien compris ton explication et ton lien est dead
    mon application n'est pas en delphi mais j'ai ce pb de deadlock et ton expliication a l'air d'etre "generale" ...

    Peux tu en dire plus ? merci

  6. #6
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Salut.

    En gros cela veut dire :
    1° Eviter d'utiliser des transactions globales.
    2° Il faut utiliser Commit/RollBack à la place de Commitretainning/Rollbackretainning

    3 ° La durée d'une transaction doit être très courte
    4° Bien configurer les transactions.

    A+
    On progresse .....

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/12/2010, 10h47
  2. Deadlock firebird dans une application Delphi
    Par lopezpacheco dans le forum Bases de données
    Réponses: 5
    Dernier message: 05/01/2010, 01h02
  3. [Débat] Choisir InterBase/Firebird ou Microsoft SQL-SERVER ?
    Par asenaici dans le forum Décisions SGBD
    Réponses: 90
    Dernier message: 19/03/2009, 20h51
  4. [FIREBIRD]Drivers ODBC
    Par tripper.dim dans le forum Connexion aux bases de données
    Réponses: 10
    Dernier message: 24/04/2007, 11h02
  5. Refus d'accès à une base Firebird
    Par severine dans le forum Installation
    Réponses: 18
    Dernier message: 04/06/2003, 16h03

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