Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

हर बार जब मैं पुन:नियोजित करता हूं तो मुझे कनेक्शन पूल को फ्लश करने की आवश्यकता क्यों होती है?

आपका मूल कारण, PoolingException: javax.resource.spi.LocalTransactionException: Communications link failure इस ग्लासफ़िश बग से संबंधित है , जो बताता है (नीचे टिप्पणी टैब में) कि आपको अपने अमान्य कनेक्शन रीफ्रेश करने की आवश्यकता हो सकती है।

जगदीश . द्वारा बग टिप्पणी अपने कनेक्शन सत्यापन प्रकार की जांच करने के लिए कहता है। यदि यह "ऑटोकॉमिट" (डिफ़ॉल्ट) पर सेट है, तो जेडीबीसी ड्राइवर पूर्व कनेक्शन सत्यापन डेटा को कैश कर सकते हैं, और भविष्य के कनेक्शन सत्यापन के दौरान कोई वास्तविक डेटाबेस इंटरैक्शन नहीं होगा।

समस्या को हल करने के लिए, connection-validation-method="table" और validation-table-name="any_table_you_know_exists" (any_table_you_know_exists . को बदलें किसी भी मौजूदा तालिका के नाम के साथ)। ऐसा करने से कनेक्शन कैश के बजाय डेटाबेस से बात करने के लिए बाध्य होते हैं; यदि कनेक्शन अमान्य है, तो इसे हटा दिया जाएगा और फिर से बनाया जाएगा। आपको is-connection-validation-required="true" भी निर्दिष्ट करने की आवश्यकता हो सकती है ।

अतिरिक्त कॉन्फ़िगरेशन में सहायता के लिए लेख:

  1. यह लेख समस्या के बारे में भी विस्तार से बताते हैं।
  2. जगदीश का Oracle ब्लॉग आलेख इस विषय पर अधिक जानकारी है।
  3. आलेख Glassfish JDBC कनेक्शन सत्यापन को विस्तार से समझाते हुए।

जगदीश के ब्लॉग से पाठ:

AS_INSTALL_ROOT/bin/asadmin set domain.resources.jdbc-connection-pool.DerbyPool.is-connection-validation-required=true
domain.resources.jdbc-connection-pool.DerbyPool.is-connection-validation-required = true

AS_INSTALL_ROOT/bin/asadmin set domain.resources.jdbc-connection-pool.DerbyPool.connection-validation-method=table
domain.resources.jdbc-connection-pool.DerbyPool.connection-validation-method = table

bin/asadmin set domain.resources.jdbc-connection-pool.DerbyPool.validation-table-name=sys.systables
domain.resources.jdbc-connection-pool.DerbyPool.validation-table-name = sys.systables

ध्यान दें कि नमूना कोड sys.systables . को संदर्भित करता है , जो एक MS SQL तालिका है जिसके अस्तित्व की गारंटी है। Oracle के लिए, गारंटीकृत तालिका देखें dual . MySQL के लिए, केवल सत्यापन उद्देश्यों के लिए 1-स्तंभ तालिका बनाएं; इसे सुरक्षित रूप से चलाएं और डेटा की एक पंक्ति सम्मिलित करके तालिका को पूर्व-पॉप्युलेट करें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जब लोग पंजीकरण करते हैं तो डुप्लिकेट उपयोगकर्ता नाम कैसे रोकें?

  2. Utf8_unicode_ci और utf8_unicode_520_ci . में क्या अंतर है?

  3. PHP में बाएं शामिल क्वेरी द्वारा लौटाए गए सरणी डेटा को कैसे समूहित करें?

  4. मैं php/sql के साथ mysql डेटा में इनपुट की तुलना कैसे करूं?

  5. वर्तमान कॉन्फ़िगरेशन के अनुसार कोई मैप किए गए Doctrine ORM निकाय नहीं हैं