2017-01-08 7 views
17

मैं एक बाहरी सर्वर से एक PostgreSQL डेटाबेस का निर्यात किया, और मेरे स्थानीय सर्वर में आयात करने का प्रयास किया लेकिन यह त्रुटि आई:Postgresql - अपरिचित विन्यास पैरामीटर

unrecognized configuration parameter "idle_in_transaction_session_timeout" 

त्रुटि इस तरह का मतलब यह है कि दो सर्वर हैं postgresql के विभिन्न संस्करणों का उपयोग कर? मुझे लगता है कि में देखा, और बाहरी सर्वर चल रहा है:

version 
PostgreSQL 9.5.4 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit 

और अपने सर्वर चल रहा है:

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 
सुंदर ज्यादा

एक ही बात। क्या कोई ऐसी साइट है जहां आप प्रत्येक संस्करण के लिए सभी मान्य कॉन्फ़िगरेशन पैरामीटर देख सकते हैं? और क्या इस तरह के दो डेटाबेस को सिंक करने का कोई तरीका है, इसलिए इस तरह की असंगतताओं को स्वचालित रूप से पैच किया जाता है?

उत्तर

24

Postgresql 9.6 Release Notes के अनुसार idle_in_transaction_session_timeout पैरामीटर संस्करण 9.6 में पेश किया गया था।

E.2.3.1.10. Server Configuration

Allow sessions to be terminated automatically if they are in idle-in-transaction state for too long (Vik Fearing)

This behavior is controlled by the new configuration parameter idle_in_transaction_session_timeout. It can be useful to prevent forgotten transactions from holding locks or preventing vacuum cleanup for too long.

चूंकि आप सर्वर पर संस्करण 9.5 का उपयोग कर रहे हैं, पैरामीटर पहचाना नहीं गया है।

यह संभव है कि आपने पोस्टग्रेस्क्ल क्लाइंट के संस्करण 9.6 का उपयोग स्रोत 9.5 सर्वर से डेटा निर्यात करने के लिए किया था और पैरामीटर डंप फ़ाइल में पेश किया गया था। अगर ऐसा होता तो मैं डेटा निर्यात और आयात करने के लिए 9.5 क्लाइंट संस्करण का उपयोग करने की सलाह दूंगा।

+1

यह होना चाहिए। मैंने अपने विंडोज होस्ट पर पोस्टग्रेस्क्ल मेस्ट्रो (इसका एक व्यवस्थापक टूल जैसे pgadmin) के साथ बैकअप बनाया है जिसमें 9.6 इंस्टॉल है। लेकिन अतिथि मशीन 9.5 है। बैक अप लेने वाला डेटाबेस 9.5 भी चल रहा है, ऐसा लगता है कि मेस्ट्रो बैकअप बनाते समय बाहरी सर्वर के संस्करण को ध्यान में नहीं रखता है। –

0

छोड़कर उत्तर जाने का तरीका है, लेकिन अगर किसी कारण से आप संस्करण को अपग्रेड नहीं कर सकते हैं, तो यहां एक कामकाज है।

  1. सादे पाठ का उपयोग करके निर्यात करें। आप शायद संपीड़न का भी उपयोग करना चाहते हैं। pg_dump -F c -Z 9 dbname > file.zip
  2. आयात से पहले, हमें अपमानजनक पैरामीटर को हटाने की आवश्यकता है। ऐसा करने के लिए हम zcat और grep का उपयोग कर सकते हैं। zcat file.zip | grep -vw "idle_in_transaction_session_timeout" | psql -d newdb

ध्यान दें कि pg_import के बजाय psql का उपयोग करके कमियां हैं। उदाहरण के लिए, कोई-साथ आयात करने के लिए -j का उपयोग नहीं कर सकता है।

संबंधित मुद्दे