मैंने एक मौजूदा पोस्टग्रेज़ डेटाबेस पर manage.py inspectdb का उपयोग कर एक Django ऐप में मॉडल बनाया है यह सिवाय काम करता था कि सभी प्राथमिक कुंजी को IntegerField s के रूप में मॉडल में वर्णित किया गया था, जिससे उन्हें व्यवस्थापक पैनल में संपादन योग्य बना दिया गया और इन्हें आईडी के ज्ञान के आधार पर हाथ से प्रवेश करना पड़ा पिछला रिकॉर्ड। क्लाइंट द्वारा कुछ उपयोग के बाद मैं इसके बारे में अभी सीखा है, इसलिए मैं
blog_id = models.IntegerField (primary_key = true) जैसी चीजों को बदलने के लिए वापस चला गया ... से ...
<पूर्व> blog_id = models.AutoField (primary_key = true) अब आईडी फ़ील्ड व्यवस्थापक में प्रकट नहीं होते हैं पैनल (अच्छा), लेकिन नई पंक्तियां जोड़ना असंभव हो गया है (अच्छा नहीं)।
इंटीग्रिटीएयर पर / व्यवस्थापक / फ्रैंकलिंस_app / ब्लॉग / जोड़ /
डुप्लिकेट कुंजी मान अद्वितीय का उल्लंघन करती है बाधा "blog_pkey"
क्या तय है? (बोनस प्रश्न: क्या उस मूल्य को कैप्चर करना संभव है जो कि डीजे को नई पंक्ति के प्राथमिक कुंजी के रूप में आवंटित करने का प्रयास कर रहा है?)
सीरियल फ़ील्ड के पीछे अनुक्रम जो आपकी प्राथमिक कुंजी है वह मैन्युअल रूप से दर्ज किए गए रिकॉर्ड के बारे में नहीं जानता है।
प्राथमिक कुंजी का अधिकतम मान ढूंढें:
चुनें MAX (& lt; primary_key & gt;) FROM & lt; your_table & gt ;; फिर अंतर्निहित अनुक्रम के अगले मान को उस संख्या से अधिक से अधिक सेट करें:
SELECTAL SELECTAL ('& lt; primary_key_seq & gt;', & lt; max_value_in_primary_key_plus_something_for_safety & gt; ;); आप का उपयोग करते हुए अनुक्रम का नाम ( & lt; primary_key_seq & gt; जैसा ऊपर उल्लेखित है):
SELECT pg_get_serial_sequence ('& Lt; your_table_name & gt;', '& lt; primary_key_column_name');
Comments
Post a Comment