कनेक्शन को सर्वर पर सेट किए बिना pgAdmin में जीवित रखने का कोई तरीका?


14

मैं अपने डेटाबेस को होस्ट करने के लिए postgres.heroku.com का उपयोग कर रहा हूं। इसका मतलब है कि मेरे पास सर्वर सेटिंग्स बदलने का कोई तरीका नहीं है। इसलिए, इस सवाल का जवाब मुझे मदद नहीं करता है। हरोकू अपनी सेटिंग्स बदलने के लिए तैयार नहीं है (मैंने उनसे संपर्क किया है)।

मैं सोच रहा हूं कि कनेक्शन को जीवित रखने के लिए PgAdmin III को हैक करने का सबसे अच्छा तरीका क्या होगा। मैं उन चीजों के बारे में सोच रहा हूं जैसे कि उपयोगकर्ता इंटरफ़ेस क्रियाओं को स्वचालित करने के लिए ऑटोहोट्की मैक्रो बनाने के लिए, जबकि PgAdmin पृष्ठभूमि में है, या शायद PgAdmins पर नेटवर्क संदेश भेजने के लिए किसी प्रकार के नेटवर्क टूल का उपयोग कर रहा है।

मैंने किसी को PgAmin III के कोड में परिवर्तन करने के लिए $ 500 का प्रस्ताव भी दिया है। PgAdmin के डेवलपर, कोड को संशोधित नहीं करेंगे, सिर्फ हरोकू की वजह से।

मुझे क्या करना चाहिए? PgAdmin कई मायनों में बेहतर है, यह सिर्फ यह खामी है।


FYI करें, हरोकू इस समस्या के साथ एकमात्र नहीं है। हम Azure पर होस्ट किए गए Linux VM पर इस समस्या में चल रहे हैं और मुझे लगता है कि समस्या सेवा प्रदाता के पास निष्क्रिय TCP कनेक्शन बंद करने की है। यह बहुत अच्छा होगा यदि PgAdmin जीवित विकल्प को उजागर कर सकता है
जोनास स्टॉस्की

1
मैं 2002 से pgadmin के साथ इस मुद्दे को मिला है! निश्चित रूप से pgadmin को ऑटो बंद करने के लिए कोड किया जा सकता है क्योंकि यह ऐप को बंद करने के बजाय एक बार बाहर निकाल देता है, इसे फिर से खोल सकता है, और पूरे पेड़ को फिर से खोल सकता है?
मैथ्यू लॉक

जवाबों:


18

libpqअंतर्निहित PostgreSQL क्लाइंट लाइब्रेरी, में keepalivesTCP कीपैलिव्स को सक्षम करने का विकल्प होता है

ऐसा लगता है कि PgAdmin-III आपको सीधे मनमाने ढंग से कनेक्शन मापदंडों को निर्दिष्ट करने की अनुमति नहीं देता है, लेकिन एक वर्कअराउंड है।

जब आप PgAdmin-III में कनेक्शन कॉन्फ़िगरेशन को देखते हैं, तो आपको "सेवा" विकल्प दिखाई देगा। यह कनेक्शन सेवा फ़ाइल को संदर्भित करता है । इसका उपयोग करने के लिए, ~/.pg_service.confसामग्री के साथ बनाएं :

[myherokudb]
user=myusername
keepalives=1
connect_timeout=20
keepalives_idle=10

और PgAdmin-III से कनेक्ट होने myherokudbपर serviceफ़ील्ड में प्रवेश करें ।

यह PgAdmin-III को सेवा फ़ाइल में निर्दिष्ट कनेक्शन मापदंडों का उपयोग करने के लिए रखेगा, जिसमें रखवाले को सक्षम करना भी शामिल है।

(यदि आप Windows पर हैं, तो सेवा फ़ाइल किसी अन्य स्थान पर हो सकती है; दस्तावेज़ देखें)।

रखने वाले libpqको नियंत्रित करने के लिए कोई पर्यावरण चर नहीं है , इसलिए आप इसे इस तरह से सेट नहीं कर सकते, आपको एक सेवा फ़ाइल का उपयोग करना होगा।

PgAdmin-III के लिए अतिरिक्त कनेक्शन मापदंडों के लिए समर्थन जोड़ना, या रख-रखाव पैरामीटर को नियंत्रित करने के लिए कनेक्शन विकल्पों में एक चेकबॉक्स, बहुत तुच्छ होना चाहिए। मुझे आश्चर्य है कि अगर डेव समझ गए कि आप काम के लिए फंड देने के लिए अपने प्रस्ताव को फिर से क्या कह रहे हैं।


अद्यतन : सेवा फ़ाइल को PGSYSCONFDIRपर्यावरण चर में निर्दिष्ट स्थान पर देखा जाता है । यदि कोई परेशान है, तो यह एक प्लेटफ़ॉर्म-विशिष्ट स्थान पर डिफॉल्ट करता है, जो विंडोज के लिए ठीक से प्रलेखित नहीं लगता है। मैं एक दस्तावेज पैच प्रस्तुत करूँगा। दस्तावेज़ के लिए.pgpass अपना रास्ता दिखाता है %APPDATA%\postgresql\pgpass.conf, हालांकि, ऐसा ~/.pg_service.confहोना चाहिए %APPDATA%\postgresql\pg_service.conf... लेकिन ऐसा प्रतीत नहीं होता है।

वास्तव में, सही रास्ता है:

%APPDATA%\postgresql\.pg_service.conf

इसलिए:

  • प्रारंभ> चलाएँ
  • `% APPDATA%
  • अगर यह मौजूद नहीं है तो डायरेक्टरी "पोस्टग्रैक्कल" बनाएं
  • ऊपर दी गई सामग्री के साथ एक पाठ फ़ाइल के रूप में फ़ाइल ".pg_service.conf" बनाएं (पुनः फ़ाइल नामकरण के नीचे नोट देखें)
  • PgAdmin-III में, होस्ट नाम में "लोकलहोस्ट" और सेवा क्षेत्र में सेवा नाम दर्ज करें।

मैंने विंडोज पर परीक्षण किया, और पाया कि आप hostविंडोज पर PgAdmin-III रिक्त क्षेत्र को नहीं छोड़ सकते । PgAdmin-III कनेक्शन संवाद में निर्दिष्ट की गई सेवा फ़ाइल में निर्दिष्ट किसी भी होस्ट को ओवरराइड करने लगता है। इसलिए आपको hostसेवा फ़ाइल में एक कुंजी शामिल नहीं करनी चाहिए । (मैं एक बग रिपोर्ट करूँगा)।

विंडोज में "ज्ञात फ़ाइल प्रकारों के लिए फ़ाइल एक्सटेंशन छिपाएं" बंद है, इसलिए आप गलती से इसके .pg_service.conf.txtबजाय कॉल नहीं करते हैं। यदि आप अनिश्चित हैं कि यह सही नाम है या नहीं, सूची दृश्य में विंडोज एक्सप्लोरर में "टाइप" कॉलम की जांच करें; यह "टेक्स्ट डॉक्यूमेंट" पढ़ेगा यदि इसे गलत तरीके से नाम दिया गया है .pg_service.conf.txt, और CONF Fileयदि यह सही नाम है .pg_service.conf। यदि आपको इसका नाम बदलने में समस्या है, तो "ज्ञात फ़ाइल प्रकारों के लिए फ़ाइल एक्सटेंशन छुपाएं" बंद करें, या नोटपैड ++ जैसे एक समझदार पाठ संपादक का उपयोग करें, जो आपको पसंद की गई फ़ाइलों को बनाने देगा।

फ़ाइल नाम में अग्रणी अवधि (डॉट) नोट करें। हाँ, यह अलग है pgpass.conf, और हाँ, यह कष्टप्रद है, एक बग पर सीमा।


इसके लिए बहुत - बहुत धन्यवाद! मैंने अब अपने विंडोज 7 कंप्यूटर पर इसे आज़माने में 45 मिनट लगा दिए हैं। पहली बात यह है कि मैं "होस्ट" फ़ील्ड को खाली नहीं छोड़ सकता। यह उस डायलॉग में "ओके" बटन को डिसेबल कर देगा। मैंने मेजबान के रूप में "-" का उपयोग करने का प्रयास किया, जो मुझे दूसरी समस्या के लिए मिला। मुझे नहीं पता कि pg_service.conf फ़ाइल को कहाँ रखा जाए। मैंने परीक्षण और त्रुटि करने का प्रयास किया और इसे PgAdmin III और C: \ Users \ pc \ AppData \ Roaming \ postgresql से संबंधित सभी उप निर्देशिकाओं में रखा। मुझे हमेशा यह त्रुटि मिली: "सेवा की परिभाषा" मेहरोकुदब "नहीं मिली।
डेविड

1
मैंने pg_service.conf के बारे में पढ़ने का भी प्रयास किया, लेकिन मुझे केवल सर्वर-साइड संदर्भ में इसका उल्लेख करते हुए दस्तावेज़ मिल रहे हैं।
डेविड

मुझे नहीं पता कि आपको "सर्वर-साइड संदर्भ" कहां से मिला है, जो मैंने क्लाइंट को संदर्भित करने के लिए लिंक किया था। जब तक आप "यूनिक्स / लिनक्स" का अर्थ "सर्वर" नहीं मान लेते, जो यह नहीं करता है। चूंकि आप मूल रूप से यह उल्लेख करने के लिए परेशान नहीं थे कि आप किस ओएस पर थे, मैं अधिक विशिष्ट नहीं हो सकता। मैंने अब विंडोज-विशिष्ट जानकारी के साथ उत्तर को अपडेट किया है (और स्पष्ट रूप से, यह काफी उचित है कि आप भ्रमित थे)। इसके अलावा, विंडोज PgAdmin-III पर यूआई में निर्दिष्ट एक के साथ सेवा फ़ाइल में निर्दिष्ट होस्ट को ओवरराइड करना प्रतीत होता है, इसलिए hostसर्विस फ़ाइल को खाली छोड़ दें ।
क्रेग रिंगर

आपकी मदद के लिए बहुत बहुत धन्यवाद! आपका समाधान सिर्फ काम करता है! यह फ़ाइल नाम में अग्रणी बिंदु था जिसने मुझे भ्रमित किया, मुझे लगा कि यह एक लिनक्स चीज थी। फिर से धन्यवाद!
डेविड

2
दरअसल, यह समाधान आखिर काम नहीं करता है। मुझे उस निष्कर्ष पर आने में एक लंबा समय लगा, यह सोचकर कि यह मेरे नेटवर्क अस्थिरता आदि के कारण था, लेकिन कनेक्शन वास्तव में अभी भी समय समाप्त करता है। मुझे विश्वास है कि मैंने आपके विवरण का पालन किया है। यह एक मामला हो सकता है, क्या हेरोकू ने सैकड़ों मुफ्त डेटाबेसों की मेजबानी करने वाले अपने नि: शुल्क परीक्षण सर्वरों के हजारों कनेक्शनों से बचने के लिए कुछ रखा है।
डेविड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.