Hi.
So wie du es beschreibst, mache ich es: AutoCommit wird schon beim connect auf Off gestellt. Genau das wundert mich daran ja. Es scheint, als ob mit AutoCommit = 0 vor jedwedes Kommando ein ,,BEGIN'' gesetzt wird - und so eben auch vor ein $dbh->begin_work. Versuch doch mal bitte folgendes:
Code:
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $dbh = DBI->connect("DBI:Pg:dbname=name;host=host;port=port",
"user", "passwd", {AutoCommit => 0, RaiseError => 1});
print "AutoCommit: ", $dbh->{AutoCommit}?"Ein":"Aus", "\n";
$dbh->commit;
$dbh->begin_work;
$dbh->disconnect;
DBD beschwert sich hier nicht ueber das commit (welches ja ohne ein BEGIN zu einem Fehler fuehren sollte) sondern ueber das begin_work. Somit waere meine These bestaetigt.
Derzeit habe ich AutoCommit explizit auf On, um mit einem begin_work es auf Off zu stellen und die Transaktion zu beginnen.
LG.
Lesezeichen