sql >> Databáze >  >> RDS >> Mysql

Django + MySQL - Admin Site - Přidat uživatele - OperationalError - SAVEPOINT neexistuje

Tato chyba mě pronásledovala dlouhou dobu, a tak jsem se rozhodl kopat dále a pokusit se ji jednou provždy vyřešit.

Hlavní příčina:Problém SAVEPOINT je chyba, která se vyskytuje pouze v MySQL-Python konektoru.

Oprava:Použijte jiné ovladače MySQL pro Python (např. mysqlclient ).

Podrobnosti/Zjištění:

  • Vyzkoušeli jsme binární soubory MySQL v Homebrew, MAMP a XAMPP pro Mac.
  • Vyzkoušeli různé verze MySQL, 5.6 (libmysqlclient.18.dylib ) a 5.7 (libmysqlclient.20.dylib ).
  • Vyzkoušeli jsme různé ovladače MySQL v Pythonu.

Nebyly nalezeny žádné vztahy změnou binárních souborů/verzí MySQL. Problém jsem však zúžil testováním různých ovladačů MySQL běžně používaných v Pythonu:

  1. MySQLdb (Široce používaný, ale starý databázový konektor, poslední potvrzení bylo před 7 lety!):

    $ pip install MySQL-python

  2. mysqlclient (moderní verze MySQL-python , ale se spoustou oprav chyb a vylepšení):

    $ pip install mysqlclient

  3. PyMySQL (čistý databázový ovladač Python MySQL):

    $ pip install PyMySQL

    Poté přidejte settings.py (přímo pod import os ):

    try:
        import pymysql
        pymysql.install_as_MySQLdb()
    except:
        pass
    
  4. MySQL-Connector-Python od Oracle (čistý databázový ovladač Python MySQL):

    $ pip install mysql-connector-python-rf

    Poté upravte ENGINE databáze konfiguraci v settings.py :

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

K problému SAVEPOINT dochází pouze při použití MySQL-python konektor (ovladač č. 1), ale ne v ostatních (ovladače č. 2, #3, #4). V mém případě jsem zvolil mysqlclient . Problém je nyní pryč.



  1. Fronta úloh jako SQL tabulka s více spotřebiteli (PostgreSQL)

  2. php odstranit řádky odkazů z databáze mysql

  3. Certifikace Oracle

  4. Úvod do C