Le problème est que le dump utilise la fonction pg_catalog.lowrite(integer, bytea)
pour créer le grand objet, et la syntaxe par défaut comment bytea
les littéraux sont représentés dans PostgreSQL a changé avec la version 9.0.
Il y a le paramètre bytea_output
qui peut être défini sur escape
pour afficher bytea
dans l'ancien format avec les versions ultérieures de PostgreSQL. Hélas, pg_dump
ne respecte pas ce paramètre lors de la création de dumps, il utilise toujours le "nouveau" hex
formater.
Le résultat est qu'un vidage contenant des objets volumineux d'une version PostgreSQL 9.0 ou ultérieure ne peut pas être restauré dans une base de données antérieure à la version 9.0.
Vous devrez transférer ces gros objets d'une autre manière, probablement en écrivant un programme de migration.
Vous pouvez proposer (sur la liste de diffusion pgsql-hackers) une option pour pg_dump
qui permet de définir bytea_escape
pour le vidage, mais vous pourriez rencontrer de la résistance, car la restauration d'un vidage d'une version ultérieure de PostgreSQL vers une version plus ancienne n'est pas prise en charge.