इस बग ने मुझे लंबे समय तक परेशान किया, इसलिए मैंने और अधिक खुदाई करने और इसे हमेशा के लिए हल करने का प्रयास करने का फैसला किया।
मूल कारण:SAVEPOINT समस्या एक बग है जो केवल MySQL-Python
में होती है कनेक्टर।
फिक्स:पायथन के लिए अन्य MySQL ड्राइवरों का उपयोग करें (जैसे mysqlclient
)।
विवरण/निष्कर्ष:
- Mac के लिए Homebrew, MAMP और XAMPP में MySQL बायनेरिज़ को आज़माया।
- विभिन्न MySQL संस्करणों की कोशिश की, 5.6 (
libmysqlclient.18.dylib
) और 5.7 (libmysqlclient.20.dylib
) - विभिन्न पायथन के MySQL ड्राइवरों की कोशिश की।
MySQL बायनेरिज़/संस्करणों को बदलकर कोई संबंध नहीं मिला। लेकिन मैंने आमतौर पर पायथन में उपयोग किए जाने वाले विभिन्न MySQL ड्राइवरों का परीक्षण करके इस मुद्दे को कम कर दिया है:
-
MySQLdb (व्यापक रूप से उपयोग किया गया लेकिन पुराना डेटाबेस कनेक्टर, अंतिम प्रतिबद्धता 7 साल पहले थी!):
$ pip install MySQL-python
-
mysqlclient (
MySQL-python
का आधुनिक संस्करण , लेकिन w/ बहुत सारे बग समाधान और सुधार):$ pip install mysqlclient
-
PyMySQL (शुद्ध पायथन MySQL डेटाबेस ड्राइवर):
$ pip install PyMySQL
फिर,
settings.py
. में जोड़ें (import os
. के ठीक नीचे ):try: import pymysql pymysql.install_as_MySQLdb() except: pass
-
MySQL-कनेक्टर-पायथन Oracle द्वारा (शुद्ध पायथन MySQL डेटाबेस ड्राइवर):
$ pip install mysql-connector-python-rf
फिर, डेटाबेस के
ENGINE
को संपादित करेंsettings.py
. में कॉन्फ़िगरेशन :'ENGINE': 'mysql.connector.django',
SAVEPOINT समस्या केवल MySQL-python . का उपयोग करते समय होती है कनेक्टर (#1 ड्राइवर), लेकिन अन्य में नहीं (#2, #3, #4 ड्राइवर)। मेरे मामले में, मैंने mysqlclient . चुना था . समस्या अब दूर हो गई है।