平台:Python 2.5、Django 开发根、PostgreSQL 8.4、Windows Vista Ultimate 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 开发服务器工作正常,PostgreSQL 服务器正常工作并回答有关其他模型数据的查询。
使用 pgAdmin III 删除以前版本的坏表时,控制台命令“python manage.py syncdb”会产生以下错误:
创建表 application1_aisc_customary 为 application1.aisc_customary 模型安装自定义 SQL 无法为 application1.aisc_customary 模型安装自定义 SQL:关系“application1_aisc_customary”的列“mtype”不存在第 1 行:INSERT INTO application1_aisc_customary(MTYPE,EDI_STD_NOME ...
克拉指向 MTYPE 的 M。尽管有错误,但列(大写)MTYPE确实存在,如使用 pgAdmin III 所见。请注意,Django 管理员报告了该表,但它没有记录。
我已经为 SQL 尝试了 unicode 和 ANSI 编码,从模型属性中删除了 editable=False,并为除模型属性之外的所有内容都使用了小写名称。也许我错过了一些准备性 SQL 语句。我要出击了。我将非常感谢有启发性的回应。在此先感谢您的帮助。
09/21/09:郑重声明,zalew 的回答是正确的。需要小写的字段名称。我还必须将一个字段名称 id(内径)更改为 i_d 以纠正与主键的明显冲突。我将 od 更改为 o_d 以匹配。问题解决了。