Mysql
 sql >> база данни >  >> RDS >> Mysql

Django + MySQL - Администраторски сайт - Добавяне на потребител - OperationalError - SAVEPOINT не съществува

Този бъг ме преследваше дълго време, така че реших да разровя по-нататък и да се опитам да го разреша веднъж завинаги.

Основна причина:Проблемът със SAVEPOINT е грешка, която се появява само в MySQL-Python конектор.

Поправка:Използвайте други MySQL драйвери за Python (напр. mysqlclient ).

Подробности/Констатации:

  • Изпробвах двоичните файлове на MySQL в Homebrew, MAMP и XAMPP за Mac.
  • Изпробвах различни версии на MySQL, 5.6 (libmysqlclient.18.dylib ) и 5.7 (libmysqlclient.20.dylib ).
  • Изпробвах различни драйвери за MySQL на Python.

Не са открити връзки чрез промяна на двоичните файлове/версиите на MySQL. Но стесних проблема, като тествах различни драйвери на MySQL, често използвани в Python:

  1. MySQLdb (широко използван, но стар конектор за база данни, последното записване беше преди 7 години!):

    $ pip install MySQL-python

  2. mysqlclient (модерна версия на MySQL-python , но с много корекции на грешки и подобрения):

    $ pip install mysqlclient

  3. PyMySQL (чист драйвер за Python MySQL база данни):

    $ pip install PyMySQL

    След това добавете в settings.py (точно под import os ):

    try:
        import pymysql
        pymysql.install_as_MySQLdb()
    except:
        pass
    
  4. MySQL-Connector-Python от Oracle (чист Python MySQL драйвер за база данни):

    $ pip install mysql-connector-python-rf

    След това редактирайте ENGINE на базата данни конфигурация в settings.py :

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

Проблемът със SAVEPOINT възниква само при използване на MySQL-python конектор (драйвер №1), но не и в останалите (драйвери №2, №3, №4). В моя случай бях избрал mysqlclient . Проблемът вече е изчезнал.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не може да се прехвърли обект от тип 'System.DBNull' към тип 'System.Byte[]'.

  2. Промените в my.cnf не влизат в сила (Ubuntu 16.04, mysql 5.6)

  3. DAY() Примери – MySQL

  4. Как да създадете блог в PHP и MySQL база данни - Backend

  5. GROUP_CONCAT() Функция в MySQL