Thread DBM FLUSH bzw sync the Datenbank, aber wie ?
(1 answers)
Opened by Mips at 2007-08-21 20:35
Hallo zusammen,
ich habe gerade ein kleines Programm geschrieben, dass Daten in einen Flate File DB abspeichert. Hier zu verwende ich das Paket DBM, das auf DBI aufbaut, und SQL. Wenn nun das Programm unerwartet beendet wird und der Benutzer aber Änderungen an der DB vorgenommen hat, gehen diese leider verloren. Komischerweise ist AutoCommit auf 1 gesetzt, denn der befehl $db->commit(); lieferte mir eine Warning: Commit ineffective while AutoCommit is on-1 at /usr/local/lib/perl5/site_perl/5.8.8/mach/DBD/File.pm line 407. Aber wenn mir mein kleines dump Scrript nach einem Absturz die Datei anzeigen soll: #!/usr/bin/perl -w use DBI; $db = DBI->connect("dbi:DBM:"); $db->{RaiseError} = 1; $sth = $db->prepare("SELECT * FROM ews"); $sth->execute(); $db->disconnect(); Zeigt es nix an, obwohl zuvor der user ein INSERT gemacht hat ... auch die Dateien sind leer: ews% ls -lah ews.* -rw-r--r-- 1 den wheel 0B Aug 21 16:24 ews.dir -rw-r--r-- 1 den wheel 0B Aug 21 16:24 ews.lck -rw-r--r-- 1 den wheel 1.0K Aug 21 17:28 ews.pag Ich habe keine Ahnung, was ich machen kann. Von BerkeleyDB kenne ich den Befehl sync , aber diesen gibt es in DBI nicht :( Hat einer von euch eine Idee, woran es liegen kann ??? Danke für jegliche Hilfe! Bis denn dann, Mips |