PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Parallelitätsproblem mit psycopg2, Redshift und unittest

Sie verwenden DROP mit der Option CASCADE. Daher wird jedes Löschen von Tabellen mit referenzieller Integrität auch die untergeordnete Tabelle löschen, die der übergeordneten Tabelle zugeordnet ist.

Um zu beheben, ob dies tatsächlich der Fall ist, machen Sie vor dem Ausführen Ihres Codes einen Schnappschuss vorhandener Tabellen mit ihrer OID (ich denke, pg_tables oder pg_relations sollten diese Informationen haben). Führen Sie den Code aus und überprüfen Sie die OID der Fehlermeldung mit dem Snapshot für den Tabellennamen.

Bearbeiten:Es könnte daran liegen, wie Pläne in PostgreSQL (also in Redshift) für Funktionen zwischengespeichert werden. Dies ist ein dokumentierter Fehler bis 8.2, daher sollten Sie nach einer Lösung dafür suchen. Der Plan wird gemäß der ersten Ausführung der Funktion zwischengespeichert, aber für die zweite Ausführung hätten einige der Objekte neue OIDs bekommen, weil sie neu erstellt wurden.http://merlinmoncure.blogspot.ie/2007/09/wie-vorher-angegeben-postgresql-8.html

http://www.postgresql.org/message-id/example @sqldat.com