Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách kiểm tra xem 'máy chủ MySQL đã biến mất'

Bạn có thể bắt ngoại lệ OperationalError và kết nối lại.

from MySQLdb import OperationalError

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

Nếu rõ ràng bạn muốn kiểm tra xem kết nối có bị ngắt trước khi chạy truy vấn hay không, bạn có thể chạy truy vấn thử nghiệm để kiểm tra xem ngoại lệ có xảy ra hay không.

Tôi không chắc trong những trường hợp nào khác OperationalError được nêu ra. Nhưng nếu bạn chỉ muốn bắt MySQL server has gone away lỗi, bạn có thể làm điều gì đó như thế này.

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()

nó sẽ chỉ bắt lỗi 'đã biến mất' và cho phép các ngoại lệ OperationalError do các lý do khác được nêu ra.

CẬP NHẬT

Như tôi đã nói trong nhận xét, hàm truy vấn của tôi sẽ như thế này:

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)

Đó chỉ là một ví dụ và có thể không phù hợp trong trường hợp của bạn. Điểm tôi đang cố gắng thực hiện là tốt hơn hết nên có các chức năng khác nhau cho những việc khác nhau để bạn có thể xử lý những tình huống này một cách dễ dàng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay đổi mật khẩu người dùng mysql bằng dòng lệnh

  2. Công cụ trực quan hóa Mysql

  3. MySQL - Làm cách nào để cập nhật cột thập phân để cho phép nhiều chữ số hơn?

  4. Chế độ xem cụ thể hóa với MySQL

  5. Làm cách nào để tối ưu hóa cơ sở dữ liệu cho các truy vấn siêu chuỗi?