Denne fejl forfulgte mig i lang tid, så jeg besluttede at grave videre og prøve at løse det én gang for alle.
Grundårsag:SAVEPOINT-problemet er en fejl, der kun opstår i MySQL-Python stik.
Fix:Brug andre MySQL-drivere til Python (f.eks. mysqlclient ).
Detaljer/fund:
- Prøvde MySQL binære filer i Homebrew, MAMP og XAMPP til Mac.
- Prøvde forskellige MySQL-versioner, 5.6 (
libmysqlclient.18.dylib) og 5.7 (libmysqlclient.20.dylib). - Prøvde forskellige Pythons MySQL-drivere.
Ingen relationer fundet ved at variere MySQL binære filer/versioner. Men jeg har indsnævret problemet ved at teste forskellige MySQL-drivere, der almindeligvis bruges i Python:
-
MySQLdb (udbredt, men gammel databaseforbindelse, sidste commit var for 7 år siden!):
$ pip install MySQL-python -
mysqlclient (moderne version af
MySQL-python, men med masser af fejlrettelser og forbedringer):$ pip install mysqlclient -
PyMySQL (ren Python MySQL-databasedriver):
$ pip install PyMySQLTilføj derefter
settings.py(lige underimport os):try: import pymysql pymysql.install_as_MySQLdb() except: pass -
MySQL-Connector-Python af Oracle (ren Python MySQL-databasedriver):
$ pip install mysql-connector-python-rfRediger derefter databasens
ENGINEkonfiguration isettings.py:'ENGINE': 'mysql.connector.django',
SAVEPOINT-problemet opstår kun, når du bruger MySQL-python stik (#1 driver), men ikke i de andre (#2, #3, #4 drivere). På mit tilfælde havde jeg valgt mysqlclient . Problemet er væk nu.