इनमें से किसी भी उत्तर ने मेरे लिए समस्या का समाधान नहीं किया। इसका मूल कारण है:
आप utf-8 वर्ण सेट के साथ MySQL में 4-बाइट वर्णों को संग्रहीत नहीं कर सकते।
MySQL में utf-8 वर्णों पर 3 बाइट की सीमा है (हां, यह बेकार है, यहां एक Django डेवलपर द्वारा अच्छी तरह से सारांशित किया गया है )
इसे हल करने के लिए आपको चाहिए:
- utf8mb4 वर्ण सेट (केवल MySQL 5.5 से उपलब्ध)
- अपनी Django सेटिंग फ़ाइल में वर्णसेट को नीचे बताए अनुसार निर्दिष्ट करें:
सेटिंग्स.py
DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql',
...
'OPTIONS': {'charset': 'utf8mb4'},
}
}
नोट:अपना डेटाबेस बनाते समय आप 'निर्दिष्ट कुंजी बहुत लंबी थी में चल सकते हैं ' मुद्दा।
सबसे संभावित कारण CharField
. है जिसकी अधिकतम लंबाई 255 है और उस पर किसी प्रकार की अनुक्रमणिका है (उदा। अद्वितीय)। चूंकि utf8mb4 utf-8 की तुलना में 33% अधिक स्थान का उपयोग करता है, इसलिए आपको इन क्षेत्रों को 33% छोटा बनाना होगा।
इस मामले में, max_length को 255 से 191 में बदलें।
वैकल्पिक रूप से आप इस प्रतिबंध को हटाने के लिए अपने MySQL कॉन्फ़िगरेशन को संपादित कर सकते हैं लेकिन कुछ django हैकरी के बिना नहीं
अद्यतन करें: मैं बस फिर से इस मुद्दे में भाग गया और PostgreSQL पर स्विच करना
समाप्त कर दिया। क्योंकि मैं अपना VARCHAR
कम करने में असमर्थ था 191 वर्णों तक।