Esse bug me assombrou por muito tempo, então decidi cavar mais e tentar resolvê-lo de uma vez por todas.
Causa Raiz:O problema SAVEPOINT é um bug que ocorre apenas em
MySQL-Python
conector. Correção:Use outros drivers MySQL para Python (por exemplo,
mysqlclient
). Detalhes/Descobertas:
- Tentei os binários do MySQL no Homebrew, MAMP e XAMPP para Mac.
- Tentei várias versões do MySQL, 5.6 (
libmysqlclient.18.dylib
) e 5.7 (libmysqlclient.20.dylib
). - Tentei vários drivers MySQL do Python.
Nenhum relacionamento encontrado variando os binários/versões do MySQL. Mas reduzi o problema testando vários drivers MySQL comumente usados em Python:
-
MySQLdb (conector de banco de dados amplamente usado, mas antigo, o último commit foi há 7 anos!):
$ pip install MySQL-python
-
cliente mysql (versão moderna doMySQL-python
, mas com muitas correções de bugs e melhorias):
$ pip install mysqlclient
-
PyMySQL (driver de banco de dados Python MySQL puro):
$ pip install PyMySQL
Em seguida, adicionesettings.py
(logo abaixo doimport os
):
try: import pymysql pymysql.install_as_MySQLdb() except: pass
-
MySQL-Connector-Python pela Oracle (driver de banco de dados Python MySQL puro):
$ pip install mysql-connector-python-rf
Em seguida, edite oENGINE
do banco de dados configuração emsettings.py
:
'ENGINE': 'mysql.connector.django',
O problema SAVEPOINT ocorre apenas ao usar o MySQL-python conector (driver nº 1), mas não nos outros (drivers nº 2, nº 3, nº 4). No meu caso, eu escolhi o mysqlclient . O problema acabou agora.