J'ai exporté une base de données postgresql à partir d'un serveur externe et tenté de l'importer sur mon serveur local, mais j'ai obtenu l'erreur suivante:
unrecognized configuration parameter "idle_in_transaction_session_timeout"
Ce type d'erreur signifie-t-il que les deux serveurs utilisent des versions différentes de postgresql? J'ai examiné cela, et le serveur externe est en cours d'exécution:
version
PostgreSQL 9.5.4 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit
et mon serveur tourne:
version
PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609, 64-bit
À peu près la même chose. Existe-t-il un site où vous pouvez voir tous les paramètres de configuration valides pour chaque version? Et existe-t-il un moyen de synchroniser deux bases de données comme celle-ci, afin que les incompatibilités comme celle-ci soient corrigées automatiquement?
Selon Notes de publication de Postgresql 9.6 , le paramètre idle_in_transaction_session_timeout
A été introduit dans la version 9.6.
E.2.3.1.10. Configuration du serveur
Autoriser les sessions à se terminer automatiquement si elles sont trop longtemps à l'état inactif dans la transaction (Vik Fearing)
Ce comportement est contrôlé par le nouveau paramètre de configuration idle_in_transaction_session_timeout. Il peut être utile d'empêcher que des transactions oubliées conservent des verrous ou empêchent le nettoyage par aspiration trop longtemps.
Comme vous utilisez la version 9.5 sur le serveur, le paramètre n'est pas reconnu.
Il est possible que vous ayez utilisé la version 9.6 du client Postgresql pour exporter des données du serveur source 9.5 et que le paramètre ait été introduit dans le fichier de vidage. Si tel était le cas, je vous recommanderais d'utiliser une version client 9.5 pour exporter et importer les données.
La réponse acceptée est la voie à suivre, mais si pour une raison quelconque vous ne pouvez pas mettre à niveau la version, voici une solution de contournement.
pg_dump -F c -Z 9 dbname > file.Zip
zcat file.Zip | grep -vw "idle_in_transaction_session_timeout" | psql -d newdb
Notez qu'il y a des inconvénients à utiliser psql au lieu de pg_import. Par exemple, on ne peut pas utiliser le -j pour importer simultanément.