我嘗試使用外鍵連接兩個資料庫表,但我得到
ORA-00904: "A"."A_NR_ID": invalid identifier
模型的錯誤:
class A(models.Model):
id = models.IntegerField(primary_key=True)
a_nr = models.ForeignKey(B, models.DO_NOTHING)
--> #anr = models.ForeignKey(B, models.DO_NOTHING, db_column="a_nr")
f_b = models.CharField(max_length=1)
...
class B(models.Model):
id = models.IntegerField(primary_key=True)
...
如果我將a_nr替換為注釋行anr它可以作業。我不知道為什么,因為這個名字只使用一個下劃線。而且 f_b 列似乎作業得很好。
如果我然后運行“makemigrations”,它會嘗試洗掉列a_nr并創建anr,這對我來說也沒有意義,因為我認為 db_column="a_nr" 會使 oracle 資料庫中的實際名稱保持不變。
第二個錯誤是:
ORA-00904: "D"."BEZEICHNUNG_ID": invalid identifier
對于模型:
class C(models.Model):
id = models.IntegerField(primary_key=True)
bezeichnung = models.CharField()
class D(models.Model):
id = models.IntegerField(primary_key=True)
bezeichnung = models.ForeignKey(C, models.DO_NOTHING)
...
在這里我無法弄清楚出了什么問題。
uj5u.com熱心網友回復:
如果我
a_nr
用注釋行替換anr
它就可以了。我不知道為什么,因為這個名字只使用了一個下劃線。
這與欄位的名稱無關,而是與資料庫的名稱有關:對于 a ForeignKey
,并且OneToOneField
,如果您的欄位名為fieldname
,它將默認用作資料庫列fieldname_id
。您可以使用db_column=…
引數 [Django-doc]來指定要使用的列的名稱,因此:
class A(models.Model):
a_nr = models.ForeignKey(B, models.DO_NOTHING, db_column='a_nr')
# …
class D(models.Model):
bezeichnung = models.ForeignKey(C, models.DO_NOTHING, db_column='bezeichnung')
# …
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/506861.html
上一篇:ORA-01861:文字與格式字串不匹配ORA-06512:在“SYS.DBMS_SQL”,第1721行
下一篇:無法從包內創建表