[英]In go - gorm "mssql: Invalid column name 'id'
這是我在 go 中的 model
package models
import (
"time"
"gorm.io/gorm"
)
type VID uint
type CompanyNames struct {
Id VID `json:"id,omitempty"`
Name string `json:"name,omitempty"`
CreateDate time.Time `json:"CreateDate,omitempty"`
ModifyDate time.Time `json:"ModifyDate,omitempty"`
}
這是我的倉庫(從數據庫中檢索數據):
func (m *Repo) Read(id models.VID) (*models.CompanyNames, error) {
var (
cn = &models.CompanyNames{}
)
err := m.db.Debug().Table("CompanyNames").First(cn, &id).Error
if err != nil {
return nil, err
}
return cn, err
}
在“http”上,我用 echo 編寫了這段代碼
func NewHttp(e *echo.Group, lg *Logic) {
g := e.Group("/companyname")
g.GET("", readAll)
g.GET("/:Id", read)
logic = lg
}
當我調用我的 ReadAll 記錄完全檢索數據時,這意味着我已正確連接到數據庫,但是當我嘗試通過“id”獲取數據時出現錯誤:
mssql:列名“id”無效。
我的錯誤是另一只手在我的結構中制作 id 作為這樣的評論:>
type CompanyNames struct {
//Id VID `json:"id,omitempty"`
Name string `json:"name,omitempty"`
CreateDate time.Time `json:"CreateDate,omitempty"`
ModifyDate time.Time `json:"ModifyDate,omitempty"`
}
得到了新的錯誤
mssql:列名“名稱”無效。 [2690.814ms] [rows:0] SELECT * FROM "CompanyNames" WHERE "CompanyNames"."name" = '1' ORDER BY "CompanyNames"."id" OFFSET 0 ROW FETCH NEXT 1 ROWS ONLY
更新:
func Cunnection() (*gorm.DB, error) { var ( err error db *gorm.DB ) dsn:= "sqlserver://DbUser:mypass@111.111.111.111:1433?database=myDb"
db, err = gorm.Open(sqlserver.Open(dsn), &gorm.Config{})
if err != nil {
return nil, err
}
// err = db.Debug().AutoMigrate(&models.CompanyNameModel{})
// if err != nil {
// return nil, err
// }
return db, nil
}
檢查多種方式后的兩種回答方式
首先我必須使用 Find insted of First 另一只手我嘗試通過這兩種方式檢索數據
1:
err := m.db.Debug().Table("CompanyNames").Find(cn, "Id = ?", id).Error
2:
err := m.db.Debug().Table("CompanyNames").Find(cn, map[string]interface{}{
"Id": Id,
}).Error
作為研究更好的方法是第二種方法
閱讀您自己的答案后,我找到了您的問題。 正如上面的評論所說,如果您顯示表結構,則更容易找到問題。
您的查詢指定的列名稱是Id
並且您的結構沒有明確指定此名稱。 根據Grom 約定,您的Id
字段將被轉換為id
。 這個問題可以通過添加標簽來解決。
例如:
package models
import (
"time"
"gorm.io/gorm"
)
type VID uint
type CompanyNames struct {
Id VID `json:"id,omitempty" gorm:"column:Id"`
Name string `json:"name,omitempty" gorm:"column:Name"`
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.