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 oENGINEdo 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.