Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Django + MySQL - Strona administracyjna - Dodaj użytkownika - OperationalError - SAVEPOINT nie istnieje

Ten błąd prześladował mnie przez długi czas, więc postanowiłem kopać dalej i spróbować go rozwiązać raz na zawsze.

Główna przyczyna:Problem SAVEPOINT to błąd, który występuje tylko w MySQL-Python złącze.

Poprawka:użyj innych sterowników MySQL dla Pythona (np. mysqlclient ).

Szczegóły/wyniki:

  • Wypróbowałem pliki binarne MySQL w Homebrew, MAMP i XAMPP dla komputerów Mac.
  • Próbowałem różnych wersji MySQL, 5.6 (libmysqlclient.18.dylib ) i 5.7 (libmysqlclient.20.dylib ).
  • Próbowałem różnych sterowników MySQL Pythona.

Nie znaleziono relacji przez zróżnicowanie plików binarnych/wersji MySQL. Ale zawęziłem problem, testując różne sterowniki MySQL powszechnie używane w Pythonie:

  1. MySQLdb (powszechnie używane, ale stare złącze bazy danych, ostatnie zatwierdzenie miało miejsce 7 lat temu!):

    $ pip install MySQL-python

  2. mysqlclient (nowoczesna wersja MySQL-python , ale z wieloma poprawkami i ulepszeniami):

    $ pip install mysqlclient

  3. PyMySQL (czysty sterownik bazy danych MySQL w języku Python):

    $ pip install PyMySQL

    Następnie dodaj settings.py (tuż pod import os ):

    try:
        import pymysql
        pymysql.install_as_MySQLdb()
    except:
        pass
    
  4. MySQL-Connector-Python przez Oracle (czysty sterownik bazy danych MySQL w języku Python):

    $ pip install mysql-connector-python-rf

    Następnie edytuj ENGINE bazy danych konfiguracja w settings.py :

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

Problem SAVEPOINT występuje tylko podczas korzystania z MySQL-python złącze (sterownik nr 1), ale nie w pozostałych (sterowniki nr 2, nr 3, nr 4). W moim przypadku wybrałem mysqlclient . Problem zniknął.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Różnica między instrukcjami sql a klauzulą

  2. Jak zmienić wartość automatycznego przyrostu bazy danych MySQL / MariaDB?

  3. Składnia SQL ALTER TABLE – wymienione przez DBMS

  4. MySQL:wybierz losowy wpis, ale waż w stosunku do niektórych wpisów

  5. Błąd ActiveRecord:SAVEPOINT active_record_1 nie istnieje