Problemet är att dumpen använder funktionen pg_catalog.lowrite(integer, bytea)
för att skapa det stora objektet, och standardsyntaxen hur bytea
bokstaver representeras i PostgreSQL har ändrats med version 9.0.
Det finns parametern bytea_output
som kan ställas in på escape
för att mata ut bytea
i det gamla formatet med senare PostgreSQL-versioner. Tyvärr, pg_dump
respekterar inte den parametern när du skapar dumpar, den använder alltid den "nya" hex
format.
Resultatet är att en dump som innehåller stora objekt från en PostgreSQL-version av 9.0 eller senare inte kan återställas till en databas före 9.0.
Du måste överföra dessa stora objekt på något annat sätt, förmodligen genom att skriva ett migreringsprogram.
Du kan föreslå (på pgsql-hackers e-postlista) ett alternativ för att pg_dump
som gör det möjligt att ställa in bytea_escape
för dumpningen, men du kan möta motstånd, eftersom återställning av en dump från en senare PostgreSQL-version till en äldre inte stöds.