Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да проверите дали „MySQL сървърът е изчезнал“

Можете да хванете изключението OperationalError и да се свържете отново.

from MySQLdb import OperationalError

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

Ако изрично искате да проверите дали връзката е изчезнала, преди да стартирате заявки, можете да изпълните тестова заявка, за да проверите дали възниква изключението.

Не съм сигурен в какви други случаи се повдига OperationalError. Но ако искате да хванете само 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()

ще улови само грешката „изчезнала“ и ще позволи изключенията OperationalError, повдигнати поради други причини, да бъдат повдигнати.

АКТУАЛИЗИРАНЕ

Както казах в коментара, моята функция за заявка ще бъде следната:

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. Laravel 4.2:Изчакване на MYSQL. Къде да промените времето глобално

  2. MySql Amazon RDS:„Функцията Innodb е деактивирана“ от приложението

  3. MySQL - Как да преброите всички редове на таблица в една заявка

  4. Преобразуване на низ в mySql тип DECIMAL

  5. Какво е динамичен SQL?