【go】gorm中去掉默認表名後的s複數形式
背景
使用gorm時,查詢數據時mysql報錯,顯示錶名不存在,仔細查看,報錯的表名中增加了s,比如實際數據庫表名是:ali_user,報錯信息中顯示錶 ali_users 不存在
原因
gorm默認使用結構體的複數形式作爲表名
比如:
# 表結構體定義如下:
type AliUser struct{
ID int64 `json:id`,
}
# 實際讀取數據時,定義該類型的變量接收數據,報錯,顯示 ali_users表名不存在
解決
在model中增加顯式定義表名,不使用gorm的隱式表名定義規則
# TableName 解決gorm表名映射
func (AliUser) TableName() string {
return "ali_user" # gorm中默認定義的表名是 ali_users,但其實數據庫並沒有這個表
}