AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird 2.5 Generator falsch - Trigger FireDAC

Firebird 2.5 Generator falsch - Trigger FireDAC

Ein Thema von Emwykey · begonnen am 6. Feb 2018 · letzter Beitrag vom 15. Feb 2018
Antwort Antwort
Seite 2 von 3     12 3   
Emwykey

Registriert seit: 27. Aug 2013
51 Beiträge
 
#11

AW: Firebird 2.5 Generator falsch - Trigger FireDAC

  Alt 6. Feb 2018, 13:25
Hallo, danke für die Antwort, es gibt aber wirklich zu 100 % keine Stelle im Hauptprogramm und auch kein weiteres Programm welches abgesehen von den Triggern auf den Generator zugreift oder Werte in die Tabelle schreibt, ich hab sicherheitshalber noch einmal den ganzen Sourcecode geprüft. Es ist wirklich ausschließlich der Trigger - nach einem Backup und Restore läuft es auch wieder, allerdings tritt das Problem immer wieder und an verschiedenen stellen ( wie am Anfang erwähnt auf mit anderen Generatoren ) auf es ist zum Mäuse melken
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.993 Beiträge
 
Delphi XE4 Professional
 
#12

AW: Firebird 2.5 Generator falsch - Trigger FireDAC

  Alt 6. Feb 2018, 13:41
Hallo,
wie Lemmy geschrieben hatte, musst Du bei RollBacks aufpassen.
Meines Wissens laufen die Generatoren ausserhalb der Rollbacks.

siehe auch hier:
http://firebirdsql.org/pdfmanual/Fir...ide-German.pdf

Komisch ist, dass er auf einem alten Wert steht.
Laut dem Generatorguide hätte ich eher Lücken in der Sequenz erwartet.

Zitat:
Hallo, der Wert wird nicht initialisiert
Das sagst Du, aber was sagt FireDAC?

Du hattest geschrieben, dass du nichts vergleichbares gefunden hattest.
Vielleicht ja so was ?
http://tracker.firebirdsql.org/browse/CORE-2041


Wie viele Insert-Statements in die Archiv-Tabelle hast Du in deinem Code?
Heiko

Geändert von hoika ( 6. Feb 2018 um 13:45 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.856 Beiträge
 
Delphi 7 Professional
 
#13

AW: Firebird 2.5 Generator falsch - Trigger FireDAC

  Alt 6. Feb 2018, 13:45
Verstehe ich das jetzt richtig:

Der Generator gibt bei Abfrage z. B. den Wert 100 aus, obwohl er eigentlich schon bei 105 sein sollte.

Nun machst Du ein Backup und ein Restore und fragst dann den Generator erneut ab und er enthält dann den erwarteten Wert von 105?

Das sieht dann aber eher nach einem Datenbankproblem aus. Gibt es da irgendwo einen Bug?

Wie hoika schreibt, darf bei der Vergabe der ID eine Lücke entstehen, wenn ein Rollback gemacht wird, aber das ein Generator auf einem alten, bereits vergebenen, Wert steht, widerspricht der Spezifikation.
  Mit Zitat antworten Zitat
Emwykey

Registriert seit: 27. Aug 2013
51 Beiträge
 
#14

AW: Firebird 2.5 Generator falsch - Trigger FireDAC

  Alt 6. Feb 2018, 14:33
Sorry ich schreib das hier nebenher...

nochmal ausführlich vielleicht:

Es gibt keinen Insert auf die Archiv Tabelle im Code - Ausschließlich über den Trigger auf der Tabelle selbst.

Für eine unvorhersehbare Zeit funktioniert alles prima, plötzlich steht der Generator auf einem alten Wert. Übersprungene Werte habe ich noch nicht gesehen, sind aber auch kein Problem.

Wenn ich den Generatorwert nun händisch korrigiere funktioniert es 1 mal, danach ist der Wert wieder falsch. -- Bei anderen Fällen ging es dann aber auch wieder für längere Zeit

Wenn ich vor oder nach der Korrektur ein Backup Restore durchführe tritt der Fehler nicht mehr auf ( zumindest für eine gewisse Zeit )

Der Generator wird Ausschließlich im Trigger angesprochen


Das selbe tritt auch bei anderen Tabellen auf, welche nur zum Teil durch den Trigger mit der ID versehen werden, ab und an wird der Generator auch direkt angesprochen ( daher die Abfrage auf ID is null)

Das ganze passiert in einigen Kopien der Datenbank, aber nicht in allen. Es passiert zu unterschiedlichen Aktionen Zeiten und bei unterschiedlichen Generatoren - ich konnte bisher noch keine Gemeinsamkeit entdecken.

Es gibt für den aktuellen Fall kein Element abgesehen von den Triggern welches auf Generator oder Tabelle Archiv zugreift


Danke nochmal für eure Mühen

Geändert von Emwykey ( 6. Feb 2018 um 14:36 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.293 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: Firebird 2.5 Generator falsch - Trigger FireDAC

  Alt 6. Feb 2018, 15:04
Wenn ich den Generatorwert nun händisch korrigiere funktioniert es 1 mal, danach ist der Wert wieder falsch. -- Bei anderen Fällen ging es dann aber auch wieder für längere Zeit

Wenn ich vor oder nach der Korrektur ein Backup Restore durchführe tritt der Fehler nicht mehr auf ( zumindest für eine gewisse Zeit )
dann mach vor der nächsten Korrektur bitte mal ein gfix wie oben beschrieben - ich vermute, die DB hat da nen Schaden, der durchs Backup/restore gefixt wird.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.993 Beiträge
 
Delphi XE4 Professional
 
#16

AW: Firebird 2.5 Generator falsch - Trigger FireDAC

  Alt 6. Feb 2018, 15:21
Hallo,
vielleicht wird ja in einem Trigger, der nicht so häufig verwendet wird,
der falsche Generatorwert drin.
Exportiere mal deine DB (IBExpert, ExtractMetaData) und suche dort nach Deinem Generatorwert.

Was hat Deine DB für eine Endung, FDB oder GDB (Stichwort Schattenkopien)?
Heiko
  Mit Zitat antworten Zitat
Emwykey

Registriert seit: 27. Aug 2013
51 Beiträge
 
#17

AW: Firebird 2.5 Generator falsch - Trigger FireDAC

  Alt 6. Feb 2018, 15:49
ok, danke! werde ich versuchen!
  Mit Zitat antworten Zitat
Emwykey

Registriert seit: 27. Aug 2013
51 Beiträge
 
#18

AW: Firebird 2.5 Generator falsch - Trigger FireDAC

  Alt 6. Feb 2018, 15:51
Hallo,
vielleicht wird ja in einem Trigger, der nicht so häufig verwendet wird,
der falsche Generatorwert drin.
Exportiere mal deine DB (IBExpert, ExtractMetaData) und suche dort nach Deinem Generatorwert.

Was hat Deine DB für eine Endung, FDB oder GDB (Stichwort Schattenkopien)?
Den Export kann ich versuchen, Dateiformat FDB
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
2.963 Beiträge
 
Delphi 2010 Enterprise
 
#19

AW: Firebird 2.5 Generator falsch - Trigger FireDAC

  Alt 6. Feb 2018, 21:08
Sorry ich schreib das hier nebenher...
..

Der Generator wird Ausschließlich im Trigger angesprochen

..
ab und an wird der Generator auch direkt angesprochen ( daher die Abfrage auf ID is null)
Ich schreib das auch nebenher:

Sind die zitierten Aussagen oben nicht widersprüchlich?

Und,
es ist vollkommen wurscht, ob der Generator nebenher angesprochen wird.
Entscheidend ist, woher die Werte kommen, die in der Tabelle landen. Oder anders:
Du kannst dem Generator soviel Werte aus dem Kreuz leiern, wie Du magst. Und mit denen kannst Du machen, was Du willst.
Wichtig ist nur, dass in einer Tabelle die ID aus genau einem Generator kommt und in Deinem Fall sicherheitshalber bedingungslos, also ohne irgendwelche Prüfungen.

Es ist nicht ungewöhnlich, einen Generator als unique Quelle für mehrere oder auch viele Tabellen zu verwenden.
Es gibt sogar Dinge, die dafür sprechen.

Das gilt unabhängig von Deinem spezifischen Problem hier, die Reparatur bzw. Prüfung der DB Konsistenz würde ich als erstes machen und vor allem versuchen die Ursache zu finden.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.658 Beiträge
 
Delphi 7 Personal
 
#20

AW: Firebird 2.5 Generator falsch - Trigger FireDAC

  Alt 7. Feb 2018, 00:55
wie überprüfst Du, daß der wert des Generators korrekt ist?
Wenn Du schreibst:
Denoch passiert es, dass von jetzt auf nachher der Wert des Generators zur Tabelle1_Archiv nicht mehr stimmt und somit natürlich auch das Insert/Update/Delete auf Tabelle1 fehlschlägt.
Habe ich leichte Bedenken, daß Du die Funktionsweise der Trigger/Generator-Kombination richtig verstanden hast. Für ein DELETE... oder UPDATE... wir der Generator nicht benötigt, da hierfür bereits Datensätze vorhanden sein müssen.

Ggf. wäre es günstig uns mal die Statements zu zeigen bei denen der Fehler auftritt.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf