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

गोलंग, mysql:त्रुटि 1040:बहुत अधिक कनेक्शन

sql.Open वास्तव में आपके डेटाबेस से कनेक्शन नहीं खोलता है।

एक sql.DB आपके डेटाबेस से कनेक्शन का एक पूल बनाए रखता है। हर बार जब आप अपने डेटाबेस से पूछताछ करते हैं तो आपका प्रोग्राम इस पूल से कनेक्शन प्राप्त करने या अन्यथा एक नया कनेक्शन बनाने का प्रयास करेगा। इन कनेक्शनों को बंद करने के बाद पूल में वापस डाल दिया जाता है।

यह है rows.Close() करता है।आपका db.QueryRow("...") जब आप Scan(...) . को कॉल करते हैं तो आंतरिक रूप से वही काम करता है ।

मूल समस्या यह है कि आप बहुत अधिक क्वेरी बना रहे हैं, जिनमें से प्रत्येक को एक कनेक्शन की आवश्यकता है, लेकिन आप अपने कनेक्शन को पर्याप्त तेज़ी से बंद नहीं कर रहे हैं। इस तरह आपके प्रोग्राम को प्रत्येक क्वेरी के लिए एक नया कनेक्शन बनाना होगा।

आप SetMaxOpenConns पर कॉल करके अपने प्रोग्राम द्वारा उपयोग किए जाने वाले कनेक्शन की अधिकतम संख्या को सीमित कर सकते हैं। आपके sql.DB पर।

देखें http://go-database-sql.org/surprises.html अधिक जानकारी के लिए।



  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. 80 मिलियन रिकॉर्ड वाली तालिका और एक इंडेक्स जोड़ने में 18 घंटे (या हमेशा के लिए) से अधिक समय लगता है! अब क्या?

  3. स्प्रिंग-बूट वेब ऐप थोड़ी देर के बाद MySQL / RDS से कनेक्ट करने की क्षमता खो देता है

  4. MySQL:1970 से पहले की तारीखें

  5. समय स्ट्रिंग को दशमलव घंटे PHP में बदलें