sql >> Databasteknik >  >> RDS >> Mysql

Django + MySQL - Admin Site - Lägg till användare - Operational Error - SAVEPOINT existerar inte

Denna bugg förföljde mig länge, så jag bestämde mig för att gräva vidare och försöka lösa det en gång för alla.

Rotorsak:SAVEPOINT-problemet är en bugg som endast inträffar i MySQL-Python kontakt.

Fix:Använd andra MySQL-drivrutiner för Python (t.ex. mysqlclient ).

Detaljer/resultat:

  • Testat MySQL-binärfilerna i Homebrew, MAMP och XAMPP för Mac.
  • Provat olika MySQL-versioner, 5.6 (libmysqlclient.18.dylib ) och 5.7 (libmysqlclient.20.dylib ).
  • Testat olika Pythons MySQL-drivrutiner.

Inga relationer hittades genom att variera MySQL-binärfilerna/versionerna. Men jag har minskat problemet genom att testa olika MySQL-drivrutiner som ofta används i Python:

  1. MySQLdb (flitigt använt men gammal databaskoppling, senaste commit var för 7 år sedan!):

    $ pip install MySQL-python

  2. mysqlclient (modern version av MySQL-python , men med många buggfixar och förbättringar):

    $ pip install mysqlclient

  3. PyMySQL (ren Python MySQL-databasdrivrutin):

    $ pip install PyMySQL

    Lägg sedan till settings.py (precis under import os ):

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

    $ pip install mysql-connector-python-rf

    Redigera sedan databasens ENGINE konfiguration i settings.py :

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

SAVEPOINT-problemet uppstår endast när du använder MySQL-python kontakt (#1 drivrutin), men inte i de andra (#2, #3, #4 drivrutiner). På mitt fall hade jag valt mysqlclient . Problemet är borta nu.



  1. Vad är SQL?

  2. Hur man sammanfogar strängar i PostgreSQL

  3. Skapa ett sökformulär i PHP för att söka i en databas?

  4. Neo4j - Importera data från en CSV-fil med hjälp av Cypher