我正在對使用 Gorm 時出現的問題進行故障排除。我的sqlite3數據庫和Go數據模型可以很好地工作,但是當我在構建環境中遇到一些依賴項問題時,我嘗試從供應商文件夾中復制/刪除一些包,然后“去獲取”,直到我讓構建工作...但是現在當我在自己的機器中編譯和運行時,我遇到了以前從未有過的問題。當我嘗試這樣的事情時(已經檢查了configID以確保它具有有效的條目): var config models.ConfigurationDescription // Find the Configuration results := db.Where("id = ?", configID). Preload("Location"). Find(&config)Gorm 拋出以下錯誤: "invalid field found for struct `models.ConfigurationDescription`'s field Location, need to define a valid foreign key for relations or it need to implement the Valuer/Scanner interface"這就是我定義數據模型的方式(在依賴關系混亂之前,數據模型工作得很好):package modelstype LocationDescription struct { ID int `json:"locationID"` Name string `json:"name"` IsActive bool `json:"isActive"`}func (LocationDescription) TableName() string { return "locations" }type ConfigurationDescription struct { ID int `json:"configurationID"` Name string `json:"name"` IsActive bool `json:"isActive"` LocationID int `json:"-"` Location LocationDescription `json:"location,omitempty" gorm:"foreignKey:ID;references:LocationID"`}func (ConfigurationDescription) TableName() string { return "configurations" }這是使用此設置針對 sqlite 數據庫運行的:CREATE TABLE IF NOT EXISTS locations ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, latitude REAL CHECK (latitude > 0), longitude REAL CHECK (latitude > 0), is_active INTEGER DEFAULT 0);CREATE TABLE IF NOT EXISTS configurations ( id INTEGER PRIMARY KEY AUTOINCREMENT, location_id INTEGER, name TEXT, is_active INTEGER DEFAULT 0, CONSTRAINT location_fk FOREIGN KEY (location_id) REFERENCES locations(id) ON DELETE CASCADE);我知道它正在工作,我沒有更改任何代碼。我看到的一切看起來都像是按照文檔到T,所以對依賴項的更新破壞了某些東西是沒有意義的,因為它似乎沒有任何重大更改.....所以問題是,有誰知道可能導致這種情況的原因嗎?更重要的是,對如何解決問題有什么建議嗎?
1 回答

慕神8447489
TA貢獻1780條經驗 獲得超1個贊
在我看來,您在位置描述字段中的標簽是錯誤的。
首先,這是一種屬于關系模式。
foreignKey
應命名聯接到外部實體的模型本地鍵字段。references
應命名外部實體的主鍵或唯一鍵。
嘗試使用:
type ConfigurationDescription struct {
ID int `json:"configurationID"`
Name string `json:"name"`
IsActive bool `json:"isActive"`
LocationID int `json:"-"`
Location LocationDescription `json:"location,omitempty" gorm:"foreignKey:LocationID;references:ID"`
}
- 1 回答
- 0 關注
- 816 瀏覽
添加回答
舉報
0/150
提交
取消