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

Django + MySQL - Situs Admin - Tambah Pengguna - Kesalahan Operasional - SAVEPOINT tidak ada

Bug ini menghantui saya untuk waktu yang lama, jadi saya memutuskan untuk menggali lebih jauh dan mencoba menyelesaikannya untuk selamanya.

Akar Penyebab:Masalah SAVEPOINT adalah bug yang hanya terjadi di MySQL-Python konektor.

Perbaiki:Gunakan driver MySQL lain untuk Python (mis. mysqlclient ).

Detail/Temuan:

  • Mencoba binari MySQL di Homebrew, MAMP, dan XAMPP untuk Mac.
  • Mencoba berbagai versi MySQL, 5.6 (libmysqlclient.18.dylib ) dan 5.7 (libmysqlclient.20.dylib ).
  • Mencoba berbagai driver MySQL Python.

Tidak ada hubungan yang ditemukan dengan memvariasikan binari/versi MySQL. Tapi saya telah mempersempit masalah dengan menguji berbagai driver MySQL yang biasa digunakan di Python:

  1. MySQLdb (konektor basis data yang banyak digunakan tetapi lama, komit terakhir adalah 7 tahun yang lalu!):

    $ pip install MySQL-python

  2. klien mysql (versi modern MySQL-python , tetapi dengan banyak perbaikan bug dan peningkatan):

    $ pip install mysqlclient

  3. PyMySQL (driver database Python MySQL murni):

    $ pip install PyMySQL

    Kemudian, tambahkan settings.py (tepat di bawah import os ):

    try:
        import pymysql
        pymysql.install_as_MySQLdb()
    except:
        pass
    
  4. MySQL-Connector-Python oleh Oracle (driver database MySQL murni Python):

    $ pip install mysql-connector-python-rf

    Kemudian, edit ENGINE database konfigurasi di settings.py :

    'ENGINE': 'mysql.connector.django',
    

Masalah SAVEPOINT hanya terjadi saat menggunakan MySQL-python konektor (driver #1), tetapi tidak pada yang lain (driver #2, #3, #4). Dalam kasus saya, saya telah memilih mysqlclient . Masalah sudah hilang sekarang.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah Anda menambahkan pernyataan if di ORDER BY?

  2. 24 jam nilai

  3. Memeriksa bidang kosong dengan MySQL

  4. Ruang Android - Menangani Daftar Objek dalam Objek dan hasil kueri

  5. Apakah aman menyimpan nama pengguna dan kata sandi di database?