Firebird 2.5 Datenbank Einträge löschen sich sporadisch

Forum für neue Firebird-Anwender.

Moderator: thorben.braun

Antworten
Harry_7771
Beiträge: 9
Registriert: Fr 26. Aug 2022, 13:33

Hallo zusammen,

bitte entschuldigt, wenn ich keine eindeutige Frage stellen kann, ich bin blutiger Anfänger.

In einer Firebird 2.5 Datenbank wird sporadisch ein Eintrag gelöscht, der zuvor per SQL Befehl eingefügt wurde.

Manchmal bleibt der Eintrag 2 Stunden in der Tabelle, manchmal nur 2 Minuten.

Der Datentyp ist "BLOB SUB_TYPE TEXT", Zeichensatz WIN_1252.

Gibt es ein Tool o.ä., mit dem ich nachvollziehen kann, was genau den Eintrag aus der Datenbank löscht?
vr2
Beiträge: 214
Registriert: Fr 13. Apr 2018, 00:13

Hallo,

bist Du Anfänger mit Firebird oder Anfänger mit Datenbanken? Davon hängen die Antworten etwas ab.

BLOB SUB_TYPE TEXT ist ein Feld-Datentyp für Textdaten beliebiger Länge, die die Datenbank nicht weiter interpretiert. Wird denn nur der Feldinhalt geleert oder der ganze Satz gelöscht, in dem dieses Blobfeld vorkommt? Und wie wird der SQL-Befehl abgesetzt, durch eine Anwendung oder innerhalb der Datenbank durch deren Mechanismen, zb durch eine Stored Procedure oder Trigger?
Benutzeravatar
martin.koeditz
Beiträge: 443
Registriert: Sa 31. Mär 2018, 14:35

Guten Morgen,

eventuell gibt es auch nicht abgeschlossene Transaktionen. Innerhalb dieser kann ich mehrere Anweisungen (z.B. löschen eines Datensatzes) durchführen. Die Änderungen werden jedoch erst nach einem erfolgreichen Commit für andere Benutzer (Sessions) sichtbar.

Aber wie Volker schon anmerkte, benötigen wir ein paar weitere Infos.

Was wann in der Datenbank passiert, lässt sich gut mit der Trace-API oder Drittanbieter-Programmen wie Firebird-Monitor von GKSoft ermitteln.

Gruß
Martin
Martin Köditz
it & synergy GmbH
bfuerchau
Beiträge: 485
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Es sind mit Sicherheit nicht abgeschlossene Transaktionen.
Die Daten bleiben aber nur für die eine Sitzung sichtbar und können von niemand anderen gesehen oder verwendet werden so lange die Transaktion nicht abgeschlossen wird.
Machst du dann einen Close der Connection, führt der DB-Server automatisch eine Rollback durch und die Daten verschwinden wieder.

Welche Programmiersprache und welchen Treiber nutzt du?
Weißt du, wie und wann du eine Transaktion startest und Commit bzw. Rollback durchführst?
Harry_7771
Beiträge: 9
Registriert: Fr 26. Aug 2022, 13:33

vr2 hat geschrieben: Mi 19. Apr 2023, 02:47 Hallo,

bist Du Anfänger mit Firebird oder Anfänger mit Datenbanken? Davon hängen die Antworten etwas ab.

BLOB SUB_TYPE TEXT ist ein Feld-Datentyp für Textdaten beliebiger Länge, die die Datenbank nicht weiter interpretiert. Wird denn nur der Feldinhalt geleert oder der ganze Satz gelöscht, in dem dieses Blobfeld vorkommt? Und wie wird der SQL-Befehl abgesetzt, durch eine Anwendung oder innerhalb der Datenbank durch deren Mechanismen, zb durch eine Stored Procedure oder Trigger?
Der Feldinhalt wird gelöscht. Der SQL-Befehl wird durch eine Anwendung abgesetzt
Harry_7771
Beiträge: 9
Registriert: Fr 26. Aug 2022, 13:33

bfuerchau hat geschrieben: Mi 19. Apr 2023, 09:22 Es sind mit Sicherheit nicht abgeschlossene Transaktionen.
Die Daten bleiben aber nur für die eine Sitzung sichtbar und können von niemand anderen gesehen oder verwendet werden so lange die Transaktion nicht abgeschlossen wird.
Machst du dann einen Close der Connection, führt der DB-Server automatisch eine Rollback durch und die Daten verschwinden wieder.

Welche Programmiersprache und welchen Treiber nutzt du?
Weißt du, wie und wann du eine Transaktion startest und Commit bzw. Rollback durchführst?
Mit einer JDBC API innerhalb von JAVA
bfuerchau
Beiträge: 485
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Dann schau dir dieses Thema mal an und prüfe, was du ggf. nicht richtig machst:
https://docs.oracle.com/javase/tutorial ... tions.html
Antworten