Ergebnis 1 bis 4 von 4

Thema: [perl] $dbh->begin_work shlaegt fehl

  1. #1
    blickdicht ist offline Neuer Benutzer
    Registriert seit
    01.08.2006
    Beiträge
    5

    Standard [perl] $dbh->begin_work shlaegt fehl

    Hi.

    Wenn ich mich per DBI:: Pg zur Datenbank verbinde und anschliessend eine Transaktion starten will, bekomme ich immer den Fehler
    Code:
    DBD::Pg::db begin_work failed: Already in a transaction at parser.pl line 16.
    obwohl ich noch keine Transaktion gestartet habe. Ein voheriges $dbh->commit behebt das Problem auch nicht
    Hat jemand aehnliche Erfahrungen gemacht und ggf. ne Loesung? Ach ja, wo sehe ich denn die aktuellen Transaktionen?

    LG.

  2. #2
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Du solltest Autocommit beim Connecten deaktivieren, aus der DBI Manpage:

    $dbh = DBI->connect($dsn, $user, $password,
    { RaiseError => 1, AutoCommit => 0 });

    Explicitly defining the required "AutoCommit" behaviour is strongly recommended and may become mandatory in a later version. This determines whether changes are automatically committed to the database when executed, or need to be explicitly committed later.
    Dann klappt es auch mit eigenen Commits :)
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  3. #3
    blickdicht ist offline Neuer Benutzer
    Registriert seit
    01.08.2006
    Beiträge
    5

    Standard

    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.

  4. #4
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Kannst du mal das Query Logging in der DB aktivieren und schauen, welche Befehle vom DB Treiber in Perl nun wirklich abgesetzt werden?
    Am besten auch einige sleep()s an den passenden Stellen einbauen, also nach dem Connect, vor dem begin_work ect, damit man sehen kann, was zu welchem Befehl gehört.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

Ähnliche Themen

  1. Problem select per php schlägt fehl
    Von Burlito im Forum Programmierung
    Antworten: 4
    Letzter Beitrag: 11.11.2009, 23:50
  2. WHERE LIKE Bedinung bei Rule schlägt fehl
    Von mrmaddin im Forum Trigger und Funktionen
    Antworten: 2
    Letzter Beitrag: 12.08.2008, 17:01
  3. Welche PPM für Perl/Pg
    Von Dr-Kox im Forum Programmierung
    Antworten: 2
    Letzter Beitrag: 23.01.2007, 21:28
  4. OLEDB Connect schlägt fehl
    Von JSpatz im Forum externe Schnittstellen
    Antworten: 0
    Letzter Beitrag: 01.06.2006, 07:45
  5. Kompilierung von psqlodbc schlägt fehl
    Von m_haussner im Forum externe Schnittstellen
    Antworten: 4
    Letzter Beitrag: 11.04.2006, 17:45

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum