मैं एक php ऐप से एक नया Django प्रोजेक्ट में एक MySQL डेटाबेस को एकीकृत कर रहा हूं। Inspectdb अच्छी तरह से काम किया, मुझे सिर्फ कुछ क्षेत्रों को विदेशी के लिए बदलना पड़ा और अब सभी पढ़ने और संपादन वर्तमान डेटा बहुत अच्छा काम कर रहा है।डीजेगो - विरासत डीबी और 'आईडी' फ़ील्ड के साथ समस्याएं
समस्या तब होती है जब मैं एक नई प्रविष्टि बनाने का प्रयास करता हूं, मुझे त्रुटि "Field 'id' doesn't have a default value"
मिलता है। ट्रेसबैक form.save()
कॉल से शुरू होता है और अपवाद MySQL कर्सर से आ रहा है। ज्यादातर मामलों में स्तंभ id
नाम पर है, लेकिन एक मामले में यह एक नामित मूल्य है:
class ModelOne(models.Model): #normal "id" named pk
id = models.AutoField(primary_key=True, db_column='id', default=None)
other_fields = ...
class ModelTwo(models.Model): #specific pk
named_pk = models.AutoField(primary_key=True, db_column='named_pk',
default=None)
other_fields = ...
ModelTwo के लिए, जब मैं एक मान्य फ़ॉर्म पोस्ट, मैं त्रुटि मिलती है, लेकिन फिर अगर मैं अपने डेटा की सूची पर वापस जाने के लिए , नया आइटम दिखाता है! और जब मैंने खोल में नवीनतम id
मानों की जांच की, तो मैं देख सकता हूं कि वे सही ढंग से बढ़ रहे हैं।
लेकिन मॉडलऑन के लिए (केवल id
के साथ), त्रुटि अभी भी दिखाई देती है, और पीके 2147483647 (अधिकतम) बन जाता है और बाद में बचाता है डुप्लिकेट आईडी के कारण विफल रहता है। (अगला उच्चतम पीके केवल 62158 है)
इन आईडी फ़ील्ड को सही ढंग से काम करने के लिए मुझे क्या करने की आवश्यकता है?
अपडेट: अभी भी कोई फिक्सिंग इसे ठीक नहीं कर रहा है। डेटा को डंप करने और इसे ताजा, डीजेगो-निर्मित टेबल में आयात करने के बारे में सोचते हुए। अभी भी इस समस्या का हल ढूंढ रहे हैं।
Update2: db खोल से जानकारी
ModelOne:
+-------------+--------------+-------+------+---------+-----------------+
| Field | Type | Null | Key | Default | Extra |
| id | int(11) | NO | PRI | NULL | auto_increment |
ModelTwo:
+-------------+--------------+-------+------+---------+-----------------+
| Field | Type | Null | Key | Default | Extra |
| named_pk | int(11) | NO | PRI | NULL | auto_increment |
अगर आप 'डिफ़ॉल्ट हटाने पर क्या होता है = कोई नहीं '? –
@ डैनियल रोज़मन - एक ही सटीक बात। मैंने इसे केवल –