2015-05-26 5 views
36

मैं mysql.I इस त्रुटि लॉग हो रही है साथ वसंत-बूट, जेपीए-hiberanate का उपयोग करता है वाला ऐपकनेक्शन की मौत के बाद> 4 <24 वसंत-बूट जेपीए में हाइबरनेट

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 56,006,037 milliseconds ago. The last packet sent successfully to the server was 56,006,037 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem. 

यहाँ मेरी है

# DataSource settings: set here configurations for the database connection 
spring.datasource.url = jdbc:mysql://localhost:3306/test 
spring.datasource.username = test 
spring.datasource.password = test 
spring.datasource.driverClassName = com.mysql.jdbc.Driver 

# Specify the DBMS 
spring.jpa.database = MYSQL 

# Show or not log for each sql query 
spring.jpa.show-sql = true 

# Hibernate settings are prefixed with spring.jpa.hibernate.* 
spring.jpa.hibernate.ddl-auto = update 
spring.jpa.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 
spring.jpa.hibernate.naming_strategy = org.hibernate.cfg.ImprovedNamingStrategy 

इस समस्या को हल करने के लिए application.properties मैं उपयोग कर सकते हैं

spring.datasource.testOnBorrow=true 
spring.datasource.validationQuery=SELECT 1 

लेकिन मैंने जांच की कि यह recommended नहीं है। तो क्या कोई मुझे सुझाव दे सकता है कि मुझे इस त्रुटि को दूर करने के लिए क्या करना चाहिए

+1

निम्नलिखित पोस्ट पर एक नज़र डालें। http://hibernatedb.blogspot.in/2009/05/automatic-reconnect-from-hibernate-to.html, यह एक टिप्पणी लिंक था जो http://stackoverflow.com/questions/2077081/connection-with से दिलचस्प था -mysql-is-being-aborted-automaticly-how-to-config-connector-j –

+0

@ केनेथक्लार्क मैं वसंत-बूट का उपयोग वसंत नहीं कर रहा हूं, इसलिए इससे मुझे बहुत मदद नहीं मिलेगी.और मुझे वसंत के बारे में बहुत कुछ पता नहीं है । – Soham

+0

वसंत बूट वसंत पर आधारित है, इसलिए यदि आप वसंत बूट का उपयोग करते हैं, तो निश्चित रूप से आप वसंत का भी उपयोग कर रहे हैं। यदि आपको पता नहीं है तो आपको स्प्रिंग बूट की मूल बातें के बारे में अधिक पढ़ना चाहिए। – dunni

उत्तर

85

जेडीबीसी यूआरएल में autoReconnect संपत्ति निर्दिष्ट करने का सबसे आसान तरीका है, हालांकि यह अनुशंसित दृष्टिकोण नहीं है।

spring.datasource.url = jdbc:mysql://localhost:3306/test?autoReconnect=true 

यह आपके पास सक्रिय कनेक्शन होने पर और कुछ लेनदेन के दौरान कुछ समस्याएं हो सकती हैं और एक पुन: कनेक्ट होने जा रहा है। लेनदेन की शुरुआत में कनेक्शन मान्य होने पर यह समस्या नहीं देगा और शुरुआत में एक नया कनेक्शन अधिग्रहित किया जाएगा।

हालांकि आपके आवेदन के जीवनकाल के दौरान आपके कनेक्शन की सत्यापन को सक्षम करना संभवतः बेहतर है। इसके लिए आप several properties निर्दिष्ट कर सकते हैं।

पूल के लिए अनुमति देने वाले अधिकतम कनेक्शन निर्दिष्ट करके पहली शुरुआत करें। (अधिकतम पूलसाइज को निर्धारित करने पर पढ़ने के लिए this पढ़ें)।

spring.datasource.max-active=10 

तुम भी आप मिनट और निष्क्रिय कनेक्शन की अधिकतम संख्या निर्दिष्ट करना चाहते प्रारंभिक कनेक्शन

spring.datasource.initial-size=5 

अगला की संख्या निर्दिष्ट कर सकते हैं।

spring.datasource.max-idle=5 
spring.datasource.min-idle=1 

कनेक्शन को सत्यापित करने के लिए आपको सत्यापन-क्वेरी निर्दिष्ट करने और कब सत्यापित करना होगा। जैसे ही आप समय-समय पर सत्यापन करना चाहते हैं, पूल के कनेक्शन को पुनर्प्राप्त करने के बजाय (यह आपके पूल में टूटे हुए कनेक्शन को रोकने के लिए)।

spring.datasource.test-while-idle=true 
spring.datasource.test-on-borrow=true 
spring.datasource.validation-query=SELECT 1 

अब जब कि तुम भी, जबकि एक कनेक्शन निष्क्रिय है सत्यापित कर रहें आप कितनी बार आप कनेक्शन के लिए इस क्वेरी चलाने के लिए और जब एक कनेक्शन निष्क्रिय माना जाता है चाहते हैं निर्दिष्ट करने की आवश्यकता।

spring.datasource.time-between-eviction-runs-millis=5000 (this is the default) 
spring.datasource.min-evictable-idle-time-millis=60000 (this is also default) 

यह सब आपके (निष्क्रिय) कनेक्शन के सत्यापन उत्प्रेरित करने चाहिए और एक अपवाद तब होता है या निष्क्रिय अवधि निकल जाने पर जब आपके कनेक्शन पूल से निकाल दिया जाएगा।

मान लें कि आप टोमकैट जेडीबीसी का उपयोग कर रहे हैं क्योंकि कनेक्शन पूल this कॉन्फ़िगर किया गया है कि कैसे और कैसे कॉन्फ़िगर किया जाए।

+1

धन्यवाद @ एम। Deinum। बहुत बढ़िया स्पष्टीकरण। देर से होने के लिए क्षमा करें। तुमने मेरा दिन बचा लिया। – Soham

+9

महान जानकारी। वसंत बूट दस्तावेज़ में जोड़ा जाना चाहिए। –

+0

धन्यवाद। क्या 'सत्यापन-क्वेरी' प्रत्येक 'टाइम-बीच-बेदखल-रन-मिलिस' या 'न्यूनतम-बेदखल-निष्क्रिय-समय-मिलिस' चलती है? – phani

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