Ergebnis 1 bis 9 von 9

Thema: Checked Constraints beim Restore

  1. #1
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard Checked Constraints beim Restore

    Hallo mal wieder,

    [update] postgresql 9.1 [/update]

    ich habe gerade das Problem, dass ich ein mit pg-dump erzeugtes Backup, mittels pg-restore wiederherstellen möchte,
    dies jedoch scheitert, da ein oder mehrere checked constraints (Funktion(en)) sich weigern.

    Was muss ich tun, um checked-constraints beim Wiederherstellen abzuschalten?

    Oder anders - welche BackupStrategie ist zu empfehlen, wenn man checked-constraints im Model verwendet.

    Danke & Gruß

    P.s. ja ich habe schon im Forum nach dem Thema gesucht - weil ich meinte, schoneinmal hier von dem Problem gelesen zu haben - leider aber erfolglos.
    Geändert von symbiont (20.01.2012 um 13:57 Uhr)

  2. #2
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von symbiont Beitrag anzeigen
    Hallo mal wieder,

    ich habe gerade das Problem, dass ich ein mit pg-dump erzeugtes Backup, mittels pg-restore wiederherstellen möchte,
    dies jedoch scheitert, da ein oder mehrere checked constraints (Funktion(en)) sich weigern.

    Was muss ich tun, um checked-constraints beim Wiederherstellen abzuschalten?

    Oder anders - welche BackupStrategie ist zu empfehlen, wenn man checked-constraints im Model verwendet.

    Danke & Gruß

    P.s. ja ich habe schon im Forum nach dem Thema gesucht - weil ich meinte, schoneinmal hier von dem Problem gelesen zu haben - leider aber erfolglos.

    Laß mich raten: das backup ist mit dem pg_dump einer älteren Version gemacht als da, wo Du es jetzt einlesen willst?
    Falls ja ist Dein Fehler schon mal klar...

    Frage: ist das ein Fc-Backup oder ASCII? Von der Antwort hängt ab, was Du nun zu machen hast.

    Vermutlich ein -Fc, stimmts? (wegen pg_restore).

    Also, erstelle ein Inhaltslisting des Dumps und sortiere es so um, daß es konsistent ist.

    Kann es sein, daß Du mit einem sehr alten pg_dump gearbeitet hast? Vermutlich älter als 7.4, oder? (bin zu faul zu suchen, in welcher Version dieser Bug gefixt wurde, ist aber schon ewig her...)


    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
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Laß mich raten: das backup ist mit dem pg_dump einer älteren Version gemacht als da, wo Du es jetzt einlesen willst?
    Falls ja ist Dein Fehler schon mal klar...
    Nein - mit exakt dem pg_dump, welches in den bin des servers zu finden ist.
    Aber ich habe gerade festgestellt, dass ich es auf einen 9.1er wiederherstellen will.
    Ich habe auch schon mit einem 9.1er bin ein dump vom 9.0er erstellt - das gleiche problem.
    [QUOTE]

    Zitat Zitat von akretschmer Beitrag anzeigen
    Frage: ist das ein Fc-Backup oder ASCII? Von der Antwort hängt ab, was Du nun zu machen hast.

    Vermutlich ein -Fc, stimmts? (wegen pg_restore).
    mit Fc (Custom Format?) habe ich mich noch nicht beschäftigt.
    Bringt mich das weiter?
    Zitat Zitat von akretschmer Beitrag anzeigen
    Also, erstelle ein Inhaltslisting des Dumps und sortiere es so um, daß es konsistent ist.

    Kann es sein, daß Du mit einem sehr alten pg_dump gearbeitet hast? Vermutlich älter als 7.4, oder? (bin zu faul zu suchen, in welcher Version dieser Bug gefixt wurde, ist aber schon ewig her...)


    Andreas
    Ist "Inhaltslisting" ein PG Feature womit ich mich beschaeftigen sollte?
    Hast Du eine referenz in eine Doku die mich schlau machen koennte?

    Gruß & Danke

  4. #4
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    Hallo,

    ich habe jetzt - um sicher zu gehen - das dump mit pg_dump 9.1 gemacht und versucht mit 9.1 wiederherzustellen ..

    das gleiche Problem ..

    hmm

    Gruß

    Code:
    pg_restore: [Archivierer (DB)] Fehler in Phase PROCESSING TOC:
    pg_restore: [Archivierer (DB)] Fehler in Inhaltsverzeichniseintrag 2124; 0 24523 TABLE DATA prj_projects projektor
    pg_restore: [Archivierer (DB)] COPY failed for table "prj_projects": FEHLER:  neue Zeile für Relation »prj_projects« verletzt Check-Constraint »check_prj_parent«
    Die zweite Zeile deutet ja darauf hin, dass ich irgendetwas an einem inhaltsverzeichnis drehen sollte - ist nur die frage "wie" und "wo"
    Geändert von symbiont (20.01.2012 um 14:21 Uhr)

  5. #5
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    Ok - ich habe jetzt herausgefunden wie man custom-format steuert - ist gut bei pg_restore beschrieben -> listing erzeugen und bearbeiten

    Interessant - nur ist das Problem, dass im Listing des Backups die TABLE DATA eintraege in der korrekten Reihenfolge vorhanden sind .. hmm

    In der Original DB gibt es fuer den constraint auch keine Verletzungen - die Daten sind also integer.

    Noch irgendeine Idee dazu?

    Ich vermute aber, dass der Constraint noch ein Problem hat - es koennte also auch sein, dass im Model ein Bug ist, der verwunderlicher weise im Betrieb keine Rolle spielt.
    Geändert von symbiont (20.01.2012 um 14:46 Uhr)

  6. #6
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    HAHA Problem gefunden - aber noch keine Lösung

    das Problem ist, dass der Constraint der Tabelle ein Lookup auf sich selbst - also die gleiche Tabelle macht.

    Das backup ist natuerlich nicht "sortiert", sodass aus irgendeinem Grund eine Zeile die eigentlich von einer anderen Abhängt vor deren Wiederherstellung, wiederhergestellt werden soll ...

    Das geht nun schief ..

    Na mal schauen - ich versuche jetzt den Daten eine Sortierung (ueber PK) geben die im Backup auch berücksichtigt wird?

  7. #7
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von symbiont Beitrag anzeigen
    HAHA Problem gefunden - aber noch keine Lösung

    das Problem ist, dass der Constraint der Tabelle ein Lookup auf sich selbst - also die gleiche Tabelle macht.

    Das backup ist natuerlich nicht "sortiert", sodass aus irgendeinem Grund eine Zeile die eigentlich von einer anderen Abhängt vor deren Wiederherstellung, wiederhergestellt werden soll ...

    Das geht nun schief ..

    Na mal schauen - ich versuche jetzt den Daten eine Sortierung (ueber PK) geben die im Backup auch berücksichtigt wird?

    Könntest Du das mal bitte als kleine, selbstständige Demo vorführen? Also ein CREATE TABLE mit dem Constraint, Daten dazu und ein COPY, welches zwar valide Daten, aber in falscher Reihenfolge hat?

    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

  8. #8
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    524

    Standard

    Zitat Zitat von symbiont Beitrag anzeigen
    das Problem ist, dass der Constraint der Tabelle ein Lookup auf sich selbst - also die gleiche Tabelle macht.
    Aber ein Check constraint kann doch nur Werte aus "der gleichen" Row ansprechen?
    Aber letztendlich klingt es so als hättest Du besser einen Foreign key verwendet.
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

  9. #9
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von castorp Beitrag anzeigen
    Aber ein Check constraint kann doch nur Werte aus "der gleichen" Row ansprechen?
    Aber letztendlich klingt es so als hättest Du besser einen Foreign key verwendet.
    ACK.

    Er hat aber eine Funktion da involviert, vermutlich deswegen ...


    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

Ähnliche Themen

  1. deferred constraints
    Von andiwini im Forum SQL
    Antworten: 3
    Letzter Beitrag: 06.04.2011, 21:34
  2. Fehler beim Restore
    Von AndreasBeginner im Forum SQL
    Antworten: 6
    Letzter Beitrag: 20.04.2009, 14:08
  3. Problem Unique Constraints
    Von symbiont im Forum SQL
    Antworten: 4
    Letzter Beitrag: 30.06.2008, 19:31
  4. verwaiste constraints?
    Von SBlank im Forum Allgemeines
    Antworten: 3
    Letzter Beitrag: 29.12.2006, 13:56
  5. Verzögerbare Constraints?!
    Von eazy im Forum SQL
    Antworten: 1
    Letzter Beitrag: 29.09.2006, 11:39

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