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

Apakah sesi Flask-SQLAchemy thread-local ini menyebabkan server MySQL hilang kesalahan?

Coba tambahkan

app.teardown_request(Exception=None)

Dekorator, yang mengeksekusi di akhir setiap permintaan. Saat ini saya mengalami masalah serupa, dan sepertinya hari ini saya benar-benar telah menyelesaikannya menggunakan.

@app.teardown_request
def teardown_request(exception=None):
    Session.remove()
    if exception and Session.is_active:
        print(exception)
        Session.rollback()

Saya tidak menggunakan Flask-SQLAlchemy Hanya SQLAlchemy Mentah , jadi mungkin ada perbedaan untuk Anda.

Dari Dokumen

Dalam kasus saya, saya membuka scoped_session baru untuk setiap permintaan, mengharuskan saya untuk menghapusnya di akhir setiap permintaan (Flask-SQLAlchemy mungkin tidak membutuhkan ini). Selain itu, fungsi teardown_request diberikan Exception jika salah satu terjadi selama konteks. Dalam skenario ini, jika terjadi pengecualian (mungkin menyebabkan transaksi tidak dihapus, atau memerlukan rollback), kami memeriksa apakah ada pengecualian, dan melakukan rollback.

Jika ini tidak berhasil untuk pengujian saya sendiri, hal berikutnya yang akan saya lakukan adalah session.commit() di setiap pembongkaran, hanya untuk memastikan semuanya terbilas

UPDATE :juga muncul MySQL membatalkan koneksi setelah 8 jam, menyebabkan Sesi rusak.

atur pool_recycle=3600 pada konfigurasi mesin Anda, atau ke pengaturan


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemicu MySQL untuk memperbarui baris yang dimasukkan

  2. PHP/MySQL - sertakan bentuk jamak tetapi kecualikan bentuk tunggal

  3. Bagaimana cara menghilangkan kesalahan MySQL 'Pernyataan yang disiapkan perlu disiapkan ulang'

  4. validasi formulir ajax dengan mysqli_query

  5. Mencoba Perbarui Rekaman dengan PDO