我有我的模型如下:package modelsimport "github.com/lib/pq"type Guild struct { Id string `json:"id" gorm:"primaryKey"` DefaultBitrate int `json:"defaultBitrate"` DefaultState string `json:"defaultState"` DefaultCategory string `json:"defaultCategory"` DefaultUserLimit int `json:"defaultUserLimit"` HelpChannel string `json:"helpChannel"` Generators pq.StringArray `json:"generators" gorm:"type:text[]"` Channels pq.StringArray `json:"channels" gorm:"type:text[]"`}函数文件: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
1 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
使用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)
- 1 回答
- 0 关注
- 117 浏览
添加回答
举报
0/150
提交
取消