Das Problem ist, dass der Dump die Funktion pg_catalog.lowrite(integer, bytea)
verwendet um das große Objekt zu erstellen, und die Standard-Syntax wie bytea
Die Darstellung von Literalen in PostgreSQL hat sich mit Version 9.0 geändert.
Es gibt den Parameter bytea_output
die auf escape
gesetzt werden kann um bytea
auszugeben im alten Format mit späteren PostgreSQL-Versionen. Ach, pg_dump
respektiert diesen Parameter beim Erstellen von Dumps nicht, es verwendet immer den „neuen“ hex
formatieren.
Das Ergebnis ist, dass ein Dump mit großen Objekten aus einer PostgreSQL-Version von 9.0 oder höher nicht in einer Datenbank vor 9.0 wiederhergestellt werden kann.
Sie müssen diese großen Objekte auf andere Weise übertragen, wahrscheinlich indem Sie ein Migrationsprogramm schreiben.
Sie könnten (auf der Mailingliste pgsql-hackers) eine Option für pg_dump
vorschlagen das erlaubt, bytea_escape
zu setzen für den Dump, aber Sie könnten auf Widerstand stoßen, da das Wiederherstellen eines Dumps von einer neueren PostgreSQL-Version auf eine ältere Version nicht unterstützt wird.