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

कैसे जांचें कि 'MySQL सर्वर चला गया है'

आप ऑपरेशनल एरर अपवाद को पकड़ सकते हैं और पुनः कनेक्ट कर सकते हैं।

from MySQLdb import OperationalError

try:
    my_sql_operation()
except OperationalError as e:
    #do what you want to do on the error
    reconnect()
    print e

यदि आप स्पष्ट रूप से जांचना चाहते हैं कि क्वेरी चलाने से पहले कनेक्शन चला गया है या नहीं, तो आप यह जांचने के लिए एक परीक्षण क्वेरी चला सकते हैं कि क्या अपवाद होता है।

मुझे यकीन नहीं है कि किन अन्य मामलों में ऑपरेशनल एरर उठाया गया है। लेकिन अगर आप केवल MySQL server has gone away को पकड़ना चाहते हैं त्रुटि, आप ऐसा कुछ कर सकते हैं।

from MySQLdb import OperationalError

try:
    my_sql_operation()
except OperationalError as e:
    if 'MySQL server has gone away' in str(e):
        #do what you want to do on the error
        reconnect()
        print e
    else:
        raise e()

यह केवल 'चले गए' त्रुटि को पकड़ लेगा और अन्य कारणों से उठाए गए ऑपरेशनल एरर अपवादों को उठाया जाएगा।

अपडेट करें

जैसा कि मैंने टिप्पणी में कहा था, मेरा क्वेरी करने का कार्य इस प्रकार होगा:

def fetch_data(query):
    try:
        cursor = conn.Cursor()
        cursor.execute(query)
        return cursor.fetchall()
    except OperationalError as e:
        reconnect()
        print 'reconnecting and trying again...'
        fetch_data(query)

यह सिर्फ एक उदाहरण है और आपके मामले में उपयुक्त नहीं हो सकता है। मैं जो बात कहने की कोशिश कर रहा हूं, वह यह है कि अलग-अलग चीजों के लिए अलग-अलग कार्य करना बेहतर है ताकि आप इन स्थितियों को आसानी से संभाल सकें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql में लगातार रिकॉर्ड प्राप्त करें

  2. सीकेफाइंडर PHP 2.6.2 सेटिंग्स देखें, प्रदर्शित करें, सॉर्टिंग काम नहीं कर रहा है

  3. MYSQL पर रोट13 फंक्शन

  4. मैसकल स्लो क्वेरी:जॉइन + मल्टीपल WHERES + ऑर्डर बाय

  5. मैं ठीक से केस का उपयोग कैसे करूं..जब MySQL में