sql >> Database teknologi >  >> RDS >> Mysql

Django + MySQL - Admin Site - Tilføj bruger - Operational Error - SAVEPOINT eksisterer ikke

Denne fejl forfulgte mig i lang tid, så jeg besluttede at grave videre og prøve at løse det én gang for alle.

Grundårsag:SAVEPOINT-problemet er en fejl, der kun opstår i MySQL-Python stik.

Fix:Brug andre MySQL-drivere til Python (f.eks. mysqlclient ).

Detaljer/fund:

  • Prøvde MySQL binære filer i Homebrew, MAMP og XAMPP til Mac.
  • Prøvde forskellige MySQL-versioner, 5.6 (libmysqlclient.18.dylib ) og 5.7 (libmysqlclient.20.dylib ).
  • Prøvde forskellige Pythons MySQL-drivere.

Ingen relationer fundet ved at variere MySQL binære filer/versioner. Men jeg har indsnævret problemet ved at teste forskellige MySQL-drivere, der almindeligvis bruges i Python:

  1. MySQLdb (udbredt, men gammel databaseforbindelse, sidste commit var for 7 år siden!):

    $ pip install MySQL-python

  2. mysqlclient (moderne version af MySQL-python , men med masser af fejlrettelser og forbedringer):

    $ pip install mysqlclient

  3. PyMySQL (ren Python MySQL-databasedriver):

    $ pip install PyMySQL

    Tilføj derefter settings.py (lige under import os ):

    try:
        import pymysql
        pymysql.install_as_MySQLdb()
    except:
        pass
    
  4. MySQL-Connector-Python af Oracle (ren Python MySQL-databasedriver):

    $ pip install mysql-connector-python-rf

    Rediger derefter databasens ENGINE konfiguration i settings.py :

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

SAVEPOINT-problemet opstår kun, når du bruger MySQL-python stik (#1 driver), men ikke i de andre (#2, #3, #4 drivere). På mit tilfælde havde jeg valgt mysqlclient . Problemet er væk nu.



  1. Send e-mails med vedhæftede filer i SQL Server (T-SQL)

  2. To kolonner i underforespørgsel i where-klausul

  3. Den parameteriserede forespørgsel forventer den parameter, der ikke blev leveret

  4. MySQL-forespørgsel - får manglende poster ved brug af gruppe-by