Précédent   Forum des professionnels en informatique > Bases de données > Firebird
Firebird Forum d'entraide sur le SGBD Firebird. Avant de poster -> F.A.Q Firebird, Tutoriels
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/06/2007, 18h18   #1
Invité de passage
 
Inscription : mars 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 4
Points : 0
Points : 0
Par défaut Restauration sur serveur linux, client windows

Bonjour,

Je développe un composant de sauvegarde / restauration de base firebird (version utilisée 1.54),
La sauvegarde fonctionne sur serveur firebird windows et linux.
Mais la restauration ne fonctionne que sur windows (accès local et distant).
SERVEUR: Sur le serveur (Ubuntu 7.04 server sur vmWare player), firebird est lancé par xinetd
CLIENT: XP

La restauration se passe "presque bien", le fichier restauré est correct mais une exception apparait en fin de restauration.

Au départ j'avais une boucle comme ça:
Code :
1
2
3
4
5
while (NOT zIBRes.Eof) do  
begin
  zGbakLine := zIBRes.GetNextLine;                        
  DoLogEvent(zGbakLine);                      
end;
Mais sur serveur linux, le EOF ne fonctionne pas.
La dernière ligne est affichée 'gbak: finishing, closing, and going home ' puis on rentre dans la boucle une dernière fois avant plantage sur le GetNextLine.
Avec le message suivant:
Code :
'EIBInterBaseError, Unable to complete network request to host "192.168.58.128", Error reading data from the connection'
J'ai donc rajouté une condition dans ma boucle mais l'exception est générée un peu plus loin, au Detach.

J'utilise un composant TIBRestoreService (variable zIBRes) sous Delphi 6
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 try
        zIBRes.Verbose :=  True;
	zIBRes.ServiceStart;
        IF zIBRes.Verbose then
        begin
          zGbakLine := '';
          while (NOT zIBRes.Eof) AND (zGbakLine <> 'gbak: finishing, closing, and going home ') do       // Sous linux le EOF seul n'arrête pas la boucle
          begin
            zGbakLine := zIBRes.GetNextLine;                        
            DoLogEvent(zGbakLine);                      
          end;
        end;
        Result := True;
      except
        on E: EIBError do
        begin
          DoLogEvent(zGbakLine);
          DoLogEvent(E.Message);
        end;
      end;
    finally
      if zIBRes.Active then
      begin
        try
          zIBRes.Detach;    // PLANTE ICI !!!!!!!!!!
        except
           on E: EIBError do
            begin
              DoLogEvent('Erreur lors du détachement: ' + E.Message);
            end;
        end;
      end
    end;
  finally
    zIBRes.Free;
  end;
Donc la condition supplémentaire sur la boucle ne fait que déplacer le problème.
Le EOF semble fermer TOUS les ports de connexion, du coup quand on appelle une méthode la connexion au socket étant fermée le composant ne trouve
plus le serveur.
Cela se vérifie sur le processus "fbserver", son pid est constant jusqu'au EOF puis il change ensuite.

Bizarrement le problème n'existe pas avec le composant de sauvegarde.
Serait-ce un bug?
Comment éviter le problème?

Merci.
bobynux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2007, 22h32   #2
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

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

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
en changeant de composant ?
parce que ce n'est pas un bug Firebird
tu as regardé du coté d'UIB ?
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 11h58   #3
Invité de passage
 
Inscription : mars 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 4
Points : 0
Points : 0
merci de ta réponse,

a priori le problème est plutôt côté serveur, et ne provient donc pas du composant utilisé.
j'ai testé la restauration de la base exemple ("employee") donnée avec firebird et là tout se passe parfaitement bien.

effectivement il ne doit pas s'agir de bug firebird mais plutôt d'un problème soit avec les udfs ou les données de la base...

je continue mes recherches...
bobynux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 14h45   #4
Invité de passage
 
Inscription : mars 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 4
Points : 0
Points : 0
j'ai continué des tests de restauration avec différents outils, toujours le même problème.
également avec gbak en ligne de commande (mode service).
par contre fbserver ne s'arrête pas brusquement en fin de restauration avec gbak (sans mode service).

si quelqu'un à une piste... je suis preneur!
bobynux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 16h27   #5
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

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

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
sauvegarde et ou base abimée peut être ?

faire toutes les vérifications d'usage, essayer sur une autre machine ....
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2007, 17h37   #6
Invité de passage
 
Inscription : mars 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 4
Points : 0
Points : 0
test avec firebird2: la restauration se passe bien.
le problème est que je suis obligé de rester avec firebird 1.54...

donc je vais essayer d'enlever les triggers et les procédures...
bobynux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h44.


 
 
 
 
Partenaires

Hébergement Web