PostgreSQL-paramètre de configuration non reconnu
j'ai exporté une base de données postgresql à partir d'un serveur externe, et j'ai essayé de l'importer dans mon serveur local mais j'ai eu cette erreur:
unrecognized configuration parameter "idle_in_transaction_session_timeout"
ce genre d'erreur signifie-t-il que les deux serveurs utilisent des versions différentes de postgresql? J'ai regardé dans, 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 est en cours d'exécution:
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. Y a-t-il un site où vous pouvez voir tous les paramètres de configuration valides pour chaque la version? Et est-il un moyen de synchroniser deux bases de données comme cela, donc des incompatibilités comme ce sont corrigés automatiquement?
2 réponses
Selon Postgresql 9.6 Notes De Mise À Jouridle_in_transaction_session_timeout
paramètre introduit dans la version 9.6.
E. 2.3.1.10. Configuration Du Serveur
permet aux sessions d'être terminées automatiquement si elles sont en inactif dans l'état de la transaction trop longtemps (Vik Craignant)
Ce comportement est contrôlé par le nouveau paramètre de configuration idle_in_transaction_session_timeout. Il peut être utile pour prévenir les les transactions oubliées de maintenir les serrures ou d'empêcher le nettoyage sous vide pendant trop longtemps.
Puisque 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 à partir du serveur source 9.5 et que le paramètre ait été introduit dans le fichier dump. Si c'était le cas, je recommanderais l'utilisation d'une version 9.5 client 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 à jour la version, voici une solution de contournement.
- Exporter en utilisant du texte simple. Vous voulez probablement utiliser la compression aussi.
pg_dump -F c -Z 9 dbname > file.zip
- avant l'importation, nous devons supprimer le paramètre offensant. Pour ce faire, nous pouvons utiliser zcat et grep.
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.