Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: DROP Database

  1. #1
    andreas ist offline Neuer Benutzer
    Registriert seit
    05.10.2010
    Ort
    Osnabrück
    Beiträge
    20

    Standard DROP Database

    Hallo!

    Ich habe ein Programm geschrieben, dass die Wiederherstellung der Daten für unsere Anwendung durchführen soll. Zuerst wird die alte DB gelöscht, dann wird eine neue angelegt und die wiederherstellung mit pg_restore angestoßen. Um das ganze durchführen zu können, baue ich eine Verbindung zur "postgres"-DB und führe dann die befehle aus.
    Bis jetzt hat das Programm mit Postgres 8.2.x richtig funktioniert. Jetzt versuche ich dieses mit der Version 9.1.1 und habe Probleme: die Befehle "Drop database" und "Create Database" funktionieren nicht mehr. Es kommt eine Meldung, dass diese Befehle nicht in einer Transaktion ausgeführt werden können, wobei ich ja eigentlich keine Transaktion mache.
    Was könnte das sein und wie kann ich das Problem lösen?
    Gruß

    Andreas

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von andreas Beitrag anzeigen
    Hallo!

    Ich habe ein Programm geschrieben, dass die Wiederherstellung der Daten für unsere Anwendung durchführen soll. Zuerst wird die alte DB gelöscht, dann wird eine neue angelegt und die wiederherstellung mit pg_restore angestoßen. Um das ganze durchführen zu können, baue ich eine Verbindung zur "postgres"-DB und führe dann die befehle aus.
    Bis jetzt hat das Programm mit Postgres 8.2.x richtig funktioniert. Jetzt versuche ich dieses mit der Version 9.1.1 und habe Probleme: die Befehle "Drop database" und "Create Database" funktionieren nicht mehr. Es kommt eine Meldung, dass diese Befehle nicht in einer Transaktion ausgeführt werden können, wobei ich ja eigentlich keine Transaktion mache.
    Was könnte das sein und wie kann ich das Problem lösen?
    Laß mich raten:

    Du rufst psql auf und übergibst die Befehle, oder? Und hast dabei ein .psqlrc, die u.a. enthält: "\set AUTOCOMMIT off". Also, meine .psqlrc enthält dies z.B., und damit ist man erst mal in einer TX.

    Kannst Du prüfen, ob Dein Client irgendwie sowas macht?


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    andreas ist offline Neuer Benutzer
    Registriert seit
    05.10.2010
    Ort
    Osnabrück
    Beiträge
    20

    Standard

    Nein, ich baue eine ODBC-Verbindung auf, in der allerdings extra Autocommit auf ON gesetzt wird. Ich habe aber schon beide Einstellungen für Autocommit ausprobiert, was leider nichts gebracht hat.
    Gruß

    Andreas

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

    Standard

    Was passiert, wenn du die Autocommit Einstellung änderst?
    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

  5. #5
    andreas ist offline Neuer Benutzer
    Registriert seit
    05.10.2010
    Ort
    Osnabrück
    Beiträge
    20

    Standard

    Wenn ich die Autocommit-Einstellung ändere, passiert nicht. Ich bekomme den gleichen Fehler!
    Gruß

    Andreas

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

    Standard

    Kannst du mal das Query Logging anschalten?

    log_min_duration_query=0

    Und protokollieren, was alles ausgeführt wird?
    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

  7. #7
    andreas ist offline Neuer Benutzer
    Registriert seit
    05.10.2010
    Ort
    Osnabrück
    Beiträge
    20

    Standard

    Hier ist der Ausschnitt aus dem Protokoll:

    2011-10-25 10:11:29 CEST FEHLER: DROP DATABASE kann nicht in einem Transaktionsblock laufen
    2011-10-25 10:11:29 CEST ANWEISUNG: BEGIN;DROP DATABASE IF EXISTS test;
    2011-10-25 10:11:29 CEST LOG: Dauer: 0.000 ms Anweisung: ROLLBACK
    Ich habe mir auch noch die Autocommit-Einstellung von dem Programm nach Verbindungsaufbau ausgeben lassen: es ist 0.
    Von dem Programm wird definitiv nur "DROP DATABASE IF EXISTS test" übergeben.
    Gruß

    Andreas

  8. #8
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von andreas Beitrag anzeigen
    Hier ist der Ausschnitt aus dem Protokoll:



    Ich habe mir auch noch die Autocommit-Einstellung von dem Programm nach Verbindungsaufbau ausgeben lassen: es ist 0.
    Von dem Programm wird definitiv nur "DROP DATABASE IF EXISTS test" übergeben.
    Nun ja, das LOG ist da anderer Meinung. Beachte doch mal, was zwischen 'ANWEISUNG:' und 'DROP...' noch so steht ...

    Kannst Du SQL PASS THROUGH irgendwo einstellen?

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  9. #9
    andreas ist offline Neuer Benutzer
    Registriert seit
    05.10.2010
    Ort
    Osnabrück
    Beiträge
    20

    Standard

    Hallo Andreas,

    ich habe gesehen, dass dazwischen ein "BEGIN" steht, was mich ja auch wundert.

    Ich habe jetzt zum Testen einiges ausprobiert:
    1. ich habe die Transaction-Einstellungen auf dem Server auf "read uncommitted" gesetzt.
    2. ich habe festgestellt, dass der Befehl "SET AUTOCOMMIT TO OFF" von dem Server nicht mehr unterstützt wird!
    FEHLER: SET AUTOCOMMIT TO OFF wird nicht mehr unterstützt

    ********** Fehler **********

    FEHLER: SET AUTOCOMMIT TO OFF wird nicht mehr unterstützt
    SQL Status:0A000
    3. Hier ist noch ein Ausschnitt aus dem Protokoll:
    2011-10-25 10:50:57 CEST LOG: Dauer: 0.000 ms Anweisung: BEGIN;set TRANSACTION_ISOLATION to 'read uncommitted'
    2011-10-25 10:50:57 CEST LOG: Dauer: 0.000 ms Anweisung: SAVEPOINT _EXEC_SVP_03DC9030
    2011-10-25 10:50:57 CEST FEHLER: DROP DATABASE kann nicht in einem Transaktionsblock laufen
    2011-10-25 10:50:57 CEST ANWEISUNG: DROP DATABASE IF EXISTS test;
    2011-10-25 10:50:57 CEST LOG: Dauer: 0.000 ms Anweisung: ROLLBACK to _EXEC_SVP_03DC9030
    2011-10-25 10:50:57 CEST LOG: Dauer: 0.000 ms Anweisung: RELEASE _EXEC_SVP_03DC9030
    und mit einem Commit nach "SET"

    2011-10-25 10:58:48 CEST LOG: Dauer: 0.000 ms Anweisung: BEGIN;set TRANSACTION_ISOLATION to 'read uncommitted'
    2011-10-25 10:58:48 CEST LOG: Dauer: 0.000 ms Anweisung: COMMIT
    2011-10-25 10:58:48 CEST FEHLER: DROP DATABASE kann nicht in einem Transaktionsblock laufen
    2011-10-25 10:58:48 CEST ANWEISUNG: BEGIN;DROP DATABASE IF EXISTS m1;
    2011-10-25 10:58:48 CEST LOG: Dauer: 0.000 ms Anweisung: ROLLBACK
    Zitat Zitat von akretschmer
    Kannst Du SQL PASS THROUGH irgendwo einstellen?
    Wie kann ich es überhaupt machen?
    Gruß

    Andreas

  10. #10
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von andreas Beitrag anzeigen
    Hallo Andreas,

    Wie kann ich es überhaupt machen?
    ODBC-Treiber. Der setzt das BEGIN; da ein, bin ich mir recht sicher.


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 02.12.2010, 15:33
  2. pg_dump - Drop Table ohne Drop Schema
    Von Nico im Forum Allgemeines
    Antworten: 6
    Letzter Beitrag: 04.12.2009, 10:40
  3. Read Locks? Z.B. Drop Constraint (FK) geht nciht...
    Von antonym im Forum Konfiguration
    Antworten: 25
    Letzter Beitrag: 04.12.2008, 10:58

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