django syncdb على البيانات الأولية SQL باستخدام عوائد postgresql "العمود ... غير موجود"

StackOverflow https://stackoverflow.com/questions/1449984

  •  11-09-2019
  •  | 
  •  

سؤال

منصة: بيثون 2.5، جذر تطوير Django، postgresql 8.4، ويندوز فيستا النهائي SP2. الإجراء: وثائق Django، الإصدار 1.0، رابط النص, ، القسم 34.2، توفير بيانات SQL الأولي.

الشفرة:

models.py:  

class aisc_customary(models.Model):
    MTYPE                 = models.CharField(max_length=4, editable=False, 
                                help_text="Shape type, e.g. W, C, L, etc.")
    EDI_STD_NOMENCLATURE  = models.CharField(max_length=26, editable=False, 
                                help_text="EDI shape designation")
    AISC_MANUAL_LABEL     = models.CharField(max_length=26, editable=False, primary_key=True, 
                                help_text="AISC Manual label")
    T_F                   = models.CharField(max_length=1, editable=False, 
                                help_text="Special note flag, T or F")
    W                     = models.FloatField(editable=False, 
                                help_text="Nominal weight, lbs/ft")
... (45 more FloatFields)


application1/sql/aisc_customary.sql:  

    INSERT INTO application1_aisc_customary (MTYPE, EDI_STD_NOMENCLATURE, AISC_MANUAL_LABEL, T_F, W, A, D, HT, OD, BF, B, ID, TW, TF, T, TNOM, TDES, KDES, KDET, K1, X, Y , E0, XP, YP, BF_2TF, B_T, H_TW, H_T, D_T, IX, ZX, SX, RX, IY, ZY, SY, RY, RZ, J, CW, C, WNO, SW, QF, QW, RO, H, TAN_ALPHA, QS) VALUES ('W', 'W44X335', 'W44X335', 'F', 335, 98.5, 44.0, 0, 0, 15.9, 0, 0, 1.03, 1.77, 0, 0, 0.00, 2.56, 2.63, 1.31, 0.00, 0.00, 0.00, 0.00, 0.00, 4.50, 0.00, 38.0, 0.00, 0.00, 31100, 1620, 1410, 17.8, 1200, 236, 150, 3.49, 0.00, 74.7, 535000, 0.00, 168, 1180, 278, 805, 0.00, 0.00, 0.00, 0.00);
    INSERT INTO application1_aisc_customary (MTYPE, EDI_STD_NOMENCLATURE, AISC_MANUAL_LABEL, T_F, W, A, D, HT, OD, BF, B, ID, TW, TF, T, TNOM, TDES, KDES, KDET, K1, X, Y , E0, XP, YP, BF_2TF, B_T, H_TW, H_T, D_T, IX, ZX, SX, RX, IY, ZY, SY, RY, RZ, J, CW, C, WNO, SW, QF, QW, RO, H, TAN_ALPHA, QS) VALUES ('W', 'W44X290', 'W44X290', 'F', 290, 85.4, 43.6, 0, 0, 15.8, 0, 0, 0.865, 1.58, 0, 0, 0.00, 2.36, 2.44, 1.25, 0.00, 0.00, 0.00, 0.00, 0.00, 5.02, 0.00, 45.0, 0.00, 0.00, 27000, 1410, 1240, 17.8, 1040, 205, 132, 3.49, 0.00, 50.9, 461000, 0.00, 166, 1040, 248, 701, 0.00, 0.00, 0.00, 0.00);
    INSERT INTO application1_aisc_customary (MTYPE, EDI_STD_NOMENCLATURE, AISC_MANUAL_LABEL, T_F, W, A, D, HT, OD, BF, B, ID, TW, TF, T, TNOM, TDES, KDES, KDET, K1, X, Y , E0, XP, YP, BF_2TF, B_T, H_TW, H_T, D_T, IX, ZX, SX, RX, IY, ZY, SY, RY, RZ, J, CW, C, WNO, SW, QF, QW, RO, H, TAN_ALPHA, QS) VALUES ('W', 'W44X262', 'W44X262', 'F', 262, 76.9, 43.3, 0, 0, 15.8, 0, 0, 0.785, 1.42, 0, 0, 0.00, 2.20, 2.25, 1.19, 0.00, 0.00, 0.00, 0.00, 0.00, 5.57, 0.00, 49.6, 0.00, 0.00, 24100, 1270, 1110, 17.7, 923, 182, 117, 3.47, 0.00, 37.3, 405000, 0.00, 165, 928, 223, 630, 0.00, 0.00, 0.00, 0.00);

... (1965 more lines like this)

يعمل خادم Django Development Server بشكل جيد و PostgresQL يعمل على العمل وإجابات حول استعلامات حول بيانات النماذج الأخرى عند إزالة ملف البيانات الأولية المزعجة من مسارها القياسي.

مع الإصدارات السابقة من الجداول السيئة انخفض باستخدام Pgadmin III أو أمر وحدة التحكم "SyncDB" "Python Manager.py" يعطي هذا الخطأ:

إنشاء طاولة application1_aisc_customary تثبيت مخصص SQL ل Application1.aisc_customary فشل في تثبيت مخصص SQL ل Application1.aisc_customary الموديل: العمود "Mtype" من العلاقة "Application1_AISC_CUSTOMARY" غير موجود خط 1: إدراج في Application1_AISC_CUSTOMARY (MTYPE، EDI_STD_NOME)

يشير قيراط إلى م من mtype. على الرغم من الخطأ، العمود (الحالة العليا) mtype هل موجودة، كما قد ينظر باستخدام Pgadmin III. لاحظ أن المسؤول Django يبلغ عن الجدول، لكنه ليس له سجلات.

لقد جربت Unicode و ANSI ترميز SQL، مع قابلة للتحرير = FALSE من السمات النموذجية، وأسماء الأحرف الصغيرة لكل شيء ولكن سمات النموذج. ربما أفتقد بعض بيان SQL التحضيري. أنا ضرب الخروج. سأكون ممتنا للغاية للاستجابة التنويرية. شكرا مقدما لمساعدتكم.

09/21/09: للسجل، فإن إجابة Zalew صحيحة. هناك حاجة إلى أسماء الحقول الصغيرة. كان علي أيضا تغيير اسم حقل واحد، معرف (من الداخل القطر) إلى I_D من أجل تصحيح الصراع الواضح مع المفتاح الأساسي. لقد غيرت OD إلى O_D للمطابقة. تم حل المشكلة.

هل كانت مفيدة؟

المحلول

ركضت اختبارا، مع نفس النتيجة مثلك. يجب عليك استخدام أسماء حقل صغيرة حتى تعمل. ومع ذلك، لا تضطر إلى إعادة كتابة SQL، يمكن أن تترك أحرف كبيرة في SQL، وجود أحرف صغيرة في تعريف النموذج وسوف تعمل على ما يرام! وهو أمر غريب لأن أسماء أعمدة PGSQL حساسة لحالة الأحرف. على الجانب الآخر، لن يتيح لك Django أن يكون لديك حقلين - صغيرة واحدة وأحرف كبيرة بنفس الاسم (ربما تم حظرها بسبب مختلف أنظمة DB DJango يعمل مع)، لذلك ... لا يزال غريبا :)

لا يمكن العثور على أي تفاصيل خلفية حول هذه المشكلة رغم ذلك. فقط اتبع الاتفاقية الصغيرة. تحرير الحقول النموذجية لخفض وتشغيل SQL الخاص بك.

نصائح أخرى

همم. أطلق عليه الرصاص في الظلام، وربما يتم تنفيذ SQL مخصص الخاص بك قبل إنشاء الجدول عبر syncdb أمر؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top