मैं जावा अनुप्रयोग के साथ किसी समस्या का निवारण करने का प्रयास कर रहा हूं जो कि MySQL डेटाबेस से कनेक्ट करने के लिए जेडीबीसी का उपयोग कर रहा है। सतह मुद्दा यह है कि जब एक वैध डेटाबेस से कनेक्ट होता है, DriverManager.getConnection कभी-कभी NULL लौटाएगा, जबकि कुछ ही मिनट बाद यह सटीक उसी डेटाबेस के लिए एक वैध कनेक्शन लौटाएगा।जावा/जेडीबीसी/MySQL: मैं समस्या निवारण कैसे करूं DriverManager.getConnection() वापस लौट रहा है?
मैं इस समस्या का निवारण करने की कोशिश करने की स्थिति में हूं, लेकिन जावा, जेडीबीसी, और MySQL बैठक की मेरी समझ काफी सीमित है। मैं इस पर बहुत सारे शोध कर रहा हूं, लेकिन एक दीवार मारा है और यह नहीं पता कि यहां से कहाँ जाना है।
यहाँ मैं अब तक क्या किया है है:
- जावा छोर पर, मैं कोड DriverManager.getConnection सभी तरह का पता लगाया है()। मैंने यह निर्धारित किया है कि वहां से पूरा कनेक्शन आ रहा है, लेकिन मेरे पास कोई कनेक्शन नहीं है जो getConnection के हुड के नीचे चल रहा है। मैं इस ऑनलाइन की पूरी तरह से व्याख्या करने के लिए संघर्ष कर रहा हूं।
- MySQL अंत में, मैंने सत्यापित किया है कि मेरे पास बहुत से कनेक्शन उपलब्ध हैं (कई बार लगभग 1000 मुफ्त कनेक्शन), इसलिए मुझे पता है कि मैं वहां अधिकतम कनेक्शन से अधिक नहीं हूं। लॉग देखकर, मैं यह निर्धारित करने में सक्षम था कि समय-फ्रेम के दौरान कनेक्शन की थोड़ी अधिक संख्या में निरस्त किया जा रहा है, जहां मुझे सबसे अधिक समस्याएं हैं, लेकिन मुझे नहीं पता कि इन कनेक्शनों को निरस्त क्यों किया गया था (MySQL abort, जेडीबीसी, जावा अनुप्रयोग?) मुझे यकीन नहीं है कि अगर कुछ और है तो मुझे MySQL अंत की तलाश करने की आवश्यकता है।
- मध्य में, जेडीबीसी के साथ, मैं बहुत खो गया हूं। मैं http://dev.mysql.com/doc/refman/5.1/en/connector-j.html पर MySQL कनेक्टर/जे पर पढ़ रहा हूं, लेकिन यह निश्चित नहीं है कि वह जानकारी जावा द्वारा उपयोग किए जा रहे जेडीबीसी ड्राइवर से संबंधित है।
कोई भी दिशा जहां से मैं यहां से जा सकता हूं, की सराहना की जाएगी।
धन्यवाद!
संपादित करें - 2/15, 10:35 पूर्वाह्न सीएसटी मैं अधिक विशिष्ट नहीं होने के लिए क्षमा चाहता हूं। यह एप्लिकेशन एक उत्पादन अनुप्रयोग है जो आम तौर पर ठीक काम करता है। यह बिना किसी समस्या के दिन हजारों कनेक्शन सफलतापूर्वक संसाधित कर रहा है, यह सिर्फ यह मुद्दा दिन के दौरान यादृच्छिक समय पर उगाएगा, और ऐसा होने पर 30 सेकंड से 5 मिनट तक कहीं भी जारी रहेगा। getConnection बीच में कहीं
var dbConn = DatabaseConnectionFactory.createDatabaseConnection('com.mysql.jdbc.Driver','jdbc:mysql://'+ serverName +':' + port + '/' + database, userName, password);
public static DatabaseConnection createDatabaseConnection(String driver, String address, String username, String password) throws SQLException {
try {
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
Properties info = new Properties();
info.setProperty("user", username);
info.setProperty("password", password);
// this property should only be set if it's for embedded database
info.setProperty("shutdown", "true");
return new DatabaseConnection(address, info);
}
public DatabaseConnection(String address, Properties info) throws SQLException {
logger.debug("creating new database connection: address=" + address + ", " + info);
this.address = address;
connection = DriverManager.getConnection(address, info);
}
मैं नहीं मानता कि वहाँ वास्तव में कोड के साथ किसी भी समस्या नहीं है, बल्कि एक मुद्दा:
यहाँ कोड है कि मैं DriverManager.getConnection करने के लिए नीचे सभी तरह से पता लगाया गया है() और MySQL।
कुछ कोड पोस्ट करें और यह आपकी मदद करना आसान होगा। – duffymo
ऐसा लगता है कि कनेक्शन (नेटवर्क) अविश्वसनीय है और आपकी मशीन हमेशा मशीन से कनेक्ट नहीं होती है, इसलिए कभी-कभी कनेक्शन स्थापित नहीं किया जा सकता है –
जेफ - यह मेरा संदेह है, लेकिन यह कहना मुश्किल है जहां यह हो सकता है। यदि मेरे लिए विभिन्न कारणों का निर्धारण करने का कोई तरीका है, तो DriverManager.getConnection NULL क्यों वापस आ जाएगा, जो मुझे इस मुद्दे को महत्वपूर्ण रूप से ट्रैक करने में सहायता करेगा। – TACHEON