2012-06-27 9 views
5

मैं निम्न त्रुटि संदेश है:mysql त्रुटि संदेशों को "कनेक्ट नहीं कर सकता" को कैसे समझें?

SQLSTATE [HY000] [2003] MySQL सर्वर से '192.168.50.45' पर कनेक्ट नहीं कर सकता (4)

मैं इस पार्स होगा (मेरे पास एचवाई 2000 है, मेरे पास 2003 है और मेरे पास (4)

+0

आपका मतलब क्या है "मेरे पास एचवाई000 है, मेरे पास 2003 है और मेरे पास (4)" – bretterer

+0

क्या यह त्रुटि '10061' है? – alfasin

+0

संभवतः यहां उत्तर दिया गया: http://stackoverflow.com/questions/2138959/confusing-pdo-only-problem-cant-connect-through-socket-access-denied-cant-co – JohnP

उत्तर

10

एचवाई000 एक बहुत ही सामान्य ओडीबीसी-स्तर त्रुटि कोड है, और 2003 MySQL- विशिष्ट त्रुटि कोड है जिसका अर्थ है कि प्रारंभिक सर्वर कनेक्शन विफल रहा। 4 असफल ओएस-स्तरीय कॉल से त्रुटि कोड है जिसे MySQL ड्राइवर ने एम करने की कोशिश की शॉट लें। (उदाहरण के लिए, लिनक्स पर आपको "(111)" दिखाई देगा जब कनेक्शन अस्वीकार कर दिया गया था, क्योंकि connect() कॉल ECONNREFUSED त्रुटि कोड के साथ विफल रहा, जिसमें 111 का मान है।)

+1

के माध्यम से ठीक नहीं है, तो मुझे कैसे पता चलेगा कि 4 का मतलब क्या है? मैं उबंटू –

+0

पर हूं, जब तक आप नहीं जानते कि कौन सी सिस्टम कॉल विफल हो रही है। – cdhowie

4

साथ आने वाले पेरर टूल का उपयोग करना MySQL:

shell> perror 4 
OS error code 4: Interrupted system call 

यह a bug जहां गलत त्रुटि रिपोर्ट किया गया है, इस मामले में, यह एक साधारण कनेक्शन समयबाह्य (errno 111)

3

Fwiw, चारों ओर 2-3 महीने एक में खर्च करने के भी सकती है और की तलाश में इस में विभिन्न तरीकों से, हम इस निष्कर्ष पर पहुंचे हैं कि (कम से कम हमारे लिए), (4) त्रुटि होती है जब नेटवर्क भी होता है एक सौहार्दपूर्ण समय में पूरा करने के लिए कनेक्शन के लिए डेटा से भरा हुआ। हमारी जांच से, (4) हैंडशेकिंग प्रक्रिया के माध्यम से मिडवे होता है। आप इसे नकली नेटवर्क भीड़ में 'netem' का उपयोग करके यूनिक्स पर्यावरण में देख सकते हैं।

त्वरित समाधान कनेक्शन टाइमआउट पैरामीटर को अपनाना है। यह किसी भी (4) त्रुटि को छुपाएगा, लेकिन इस मुद्दे का समाधान नहीं हो सकता है। वास्तविक समाधान यह देखने के लिए है कि उस समय डीबी अंत में क्या खुशी हो रही है। यदि ऐसा होता है तो आप बहुत सारे डेटा को संसाधित कर रहे हैं, तो यह देखने के लिए एक अच्छा विचार हो सकता है कि क्या आप इसे छोटे टुकड़ों में विभाजित कर सकते हैं, या यहां तक ​​कि यदि आप लक्जरी हो तो एक अलग सर्वर पर प्रसंस्करण कर सकते हैं।

1

मुझे इस समस्या का सामना करना पड़ा। आखिरकार कनेक्ट_टाउटआउट को बढ़ाएं।

0

मैं बस एक ही मुद्दे से जूझ रहा था।

DNS होस्टनाम लुकअप अक्षम करें मेरे लिए समस्या हल करें।

[mysqld] ... ... छोड़-नाम-हल

मत भूलना प्रभावी करने के लिए MySQL पुनः आरंभ करने की।

0

@cdhowie जबकि आप अन्य परिस्थितियों में सही हो सकते हैं, उस विशेष त्रुटि के साथ (4) एक असफल हैंडशेक के कारण एक mysql क्लाइंट लाइब्रेरी त्रुटि है। यह वास्तव में स्रोत कोड में दिखाई देता है। सामान्य कारण एक आंतरिक टाइमआउट के कारण बहुत अधिक डेटा है। कनेक्शन के लिए 'कमरा' बनाना सामान्य रूप से इस मुद्दे को मास्क किए बिना टाइप करता है, जैसे टाइमआउट या बैंडविड्थ बढ़ाना।

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