Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara memeriksa apakah 'server MySQL telah hilang'

Anda dapat menangkap pengecualian OperationalError dan menyambungkan kembali.

from MySQLdb import OperationalError

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

Jika Anda secara eksplisit ingin memeriksa apakah koneksi terputus sebelum menjalankan kueri, Anda dapat menjalankan kueri pengujian untuk memeriksa apakah pengecualian terjadi.

Saya tidak yakin dalam kasus apa lagi OperationalError dimunculkan. Tetapi jika Anda ingin menangkap hanya MySQL server has gone away kesalahan, Anda dapat melakukan sesuatu seperti ini.

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

itu hanya akan menangkap kesalahan 'hilang' dan membiarkan pengecualian OperationalError dimunculkan karena alasan lain.

PERBARUI

Seperti yang saya katakan di komentar, fungsi kueri saya akan seperti ini:

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)

Itu hanya sebuah contoh dan mungkin tidak cocok untuk kasus Anda. Poin yang saya coba sampaikan adalah lebih baik memiliki fungsi yang berbeda untuk hal yang berbeda sehingga Anda dapat menangani situasi ini dengan mudah.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jumlahkan, Kurangi, dan Gabungkan beberapa kolom tabel mysql

  2. InnoDB menyisipkan sangat lambat dan melambat

  3. Dapatkan Hasil Kueri MySQL sebagai Tipe Data Aslinya?

  4. Masukkan bilangan bulat positif unik serendah mungkin secara atomik di MySql

  5. Menyimpan perubahan pada entitas:Apakah MySQL solusi yang tepat?