Este error me persiguió durante mucho tiempo, así que decidí investigar más e intentar resolverlo de una vez por todas.
Causa raíz:el problema de SAVEPOINT es un error que ocurre solo en MySQL-Python
conector.
Solución:use otros controladores MySQL para Python (por ejemplo, mysqlclient
).
Detalles/Hallazgos:
- Probé los binarios de MySQL en Homebrew, MAMP y XAMPP para Mac.
- Probé varias versiones de MySQL, 5.6 (
libmysqlclient.18.dylib
) y 5.7 (libmysqlclient.20.dylib
). - Probé varios controladores MySQL de Python.
No se encontraron relaciones al variar los binarios/versiones de MySQL. Pero reduje el problema al probar varios controladores de MySQL que se usan comúnmente en Python:
-
MySQLdb (Conector de base de datos ampliamente utilizado pero antiguo, ¡la última confirmación fue hace 7 años!):
$ pip install MySQL-python
-
cliente mysql (versión moderna de
MySQL-python
, pero con muchas correcciones de errores y mejoras):$ pip install mysqlclient
-
PyMySQL (controlador de base de datos Python MySQL puro):
$ pip install PyMySQL
Luego, agregue
settings.py
(justo debajo deimport os
):try: import pymysql pymysql.install_as_MySQLdb() except: pass
-
Conector MySQL-Python por Oracle (controlador de base de datos MySQL de Python puro):
$ pip install mysql-connector-python-rf
Luego, edite el
ENGINE
de la base de datos configuración ensettings.py
:'ENGINE': 'mysql.connector.django',
El problema de SAVEPOINT ocurre solo cuando se usa MySQL-python conector (controlador #1), pero no en los otros (controladores #2, #3, #4). En mi caso, había elegido el mysqlclient . El problema ya no está.