PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

Django स्थिरता विफल रहता है, DatabaseError बताते हुए:प्रकार वर्ण भिन्न के लिए बहुत लंबा मान (50)

अपडेट करें:Django 1.8 में 50 चार सीमा अब 255 है

--

मूल उत्तर:

मुझे आज दोपहर भी सामना करना पड़ा, और मेरे पास एक फिक्स (प्रकार का) है

यह पोस्ट यहाँ निहित है कि यह एक Django बग है जो auth_permission के लिए अनुमत मान की लंबाई के साथ है। आगे की खुदाई उस विचार का समर्थन करती है, जैसा कि यह Django टिकट (भले ही यह शुरुआत में MySQL से संबंधित है)।

यह मूल रूप से है कि एक मॉडल के वर्बोज़_नाम और एक वर्णनात्मक अनुमति स्ट्रिंग के आधार पर एक अनुमति नाम बनाया जाता है, और यह auth.models.Permission.name में अनुमत 50 से अधिक वर्णों तक बह सकता है।

Django टिकट पर एक टिप्पणी उद्धृत करने के लिए:

<ब्लॉककोट>

कॉलम auth_permission.name में स्ट्रिंग मान के लिए सबसे लंबे समय तक उपसर्ग "बदल सकते हैं" और "हटा सकते हैं", दोनों 11 वर्णों के साथ हैं। कॉलम की अधिकतम लंबाई 50 है इसलिए Meta.verbose_name की अधिकतम लंबाई 39 है।

एक समाधान यह होगा कि उस कॉलम को समर्थन करने के लिए हैक किया जाए> 50 वर्ण (आदर्श रूप से दक्षिण प्रवास के माध्यम से, मैं कहता हूं, ताकि यह आसानी से दोहराने योग्य हो) लेकिन सबसे तेज़, सबसे विश्वसनीय फिक्स जो मैं सोच सकता था वह बस मेरी अतिरिक्त-लंबी वर्बोज़_नाम परिभाषा बनाना था बहुत छोटा (वर्बोज़_नाम में 47 वर्णों से लेकर लगभग 20 तक)। अब सब ठीक चल रहा है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टग्रेएसक्यूएल इन्सर्ट ऑन कॉन्फ्लिक्ट अपडेट (अप्सर्ट) सभी बहिष्कृत मूल्यों का उपयोग करता है

  2. PostgreSQL JDBC नल स्ट्रिंग को एक बाइट के रूप में लिया गया

  3. pg_ctl युक्तियाँ और तरकीबें

  4. फ्लैट जेसनबी सरणी के तत्वों पर क्वेरी पसंद करें

  5. प्राग PostgreSQL डेवलपर दिवस 2016