我的模型如下:
package models
type Guild struct {
Id string `json:"id" gorm:"primaryKey"`
DefaultBitrate string `json:"defaultBitrate"`
DefaultState string `json:"defaultState"`
DefaultCategory string `json:"defaultCategory"`
DefaultUserLimit int `json:"defaultUserLimit"`
HelpChannel string `json:"helpChannel"`
}
函式檔案:
func (h handler) CreateGuild(guildid string) error {
guild := &models.Guild{
Id: guildid,
DefaultBitrate: "64",
}
if result := h.DB.Create(&guild); result.Error != nil {
return result.Error
}
return nil
}
func (h handler) GetGuild(guildid string) (models.Guild, error) {
var guild models.Guild
if result := h.DB.First(&guild, guildid); result.Error != nil {
return guild, result.Error
}
return guild, nil
}
所以我要做的是首先創建一個公會,然后嘗試使用相同的 id 獲取它,但我沒有在控制臺中記錄任何內容
Database := db.Init()
h := dbhandlers.New(Database)
data, err := h.GetGuild("71728137382983743892")
fmt.Print(data.DefaultBitrate)
Github:https ://github.com/apidev234/abred
注意:我已經創建了這樣的公會:
err := h.CreateGuild("71728137382983743892")
除錯:
2022/03/24 13:37:23 /Users/gaurish/Desktop/Coding/TempVC-Bot/database/handlers/Functions.go:12 SLOW SQL >= 200ms
[1126.461ms] [rows:1] INSERT INTO "guilds" ("id","default_bitrate","default_state","default_category","default_user_limit","help_channel") VALUES ('ASDHA','64','','',0,'')
2022/03/24 13:37:44 /Users/gaurish/Desktop/Coding/TempVC-Bot/database/handlers/Functions.go:19 ERROR: column "asdha" does not exist (SQLSTATE 42703)
[229.439ms] [rows:0] SELECT * FROM "guilds" WHERE ASDHA ORDER BY "guilds"."id" LIMIT 1
uj5u.com熱心網友回復:
與非數字主鍵一起使用First時,您需要明確指定要匹配主鍵的列。
官方檔案:
如果主鍵是字串(例如,像 uuid),則查詢將撰寫如下:
db.First(&user, "id = ?", "1b74413f-f3b8-409f-ac47-e8c062e3472a") // SELECT * FROM users WHERE id = "1b74413f-f3b8-409f-ac47-e8c062e3472a";
所以在GetGuild這個:
h.DB.First(&guild, guildid)
應該是這樣的:
h.DB.First(&guild, "id = ?", guildid)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/448500.html
標籤:数据库 PostgreSQL 走 戈戈姆
