我将https://github.com/go-pg/pg用于我的PostegreSQL数据库和Go。我正在尝试获取具有列Settings
的表site_name
的值,但是由于某种原因,它给了我错误panic: model=Settings does not have primary keys
package mypackage
import (
"database"
)
type Settings struct {
SiteName string
}
func Get() string {
var name Settings
err := Db.Model(&name).First()
if err != nil {
panic(err)
}
return name.SiteName
}
我没有经验来真正了解这里发生的事情或如何解决它。有什么办法吗?谢谢!
示例(FirstRow):https://godoc.org/github.com/go-pg/pg#DB.Select
答案 0 :(得分:0)
ORM要求您定义pk,因此您必须将其添加到结构以及db表中。
https://github.com/go-pg/pg/blob/master/orm/query.go#L558 https://github.com/go-pg/pg/blob/d4fc7afde3ee9d0a780f9c67daf8a8a3bfd84060/orm/table.go#L124
因此,将一个Id
字段添加到您的结构中
type Settings struct {
Id int64
SiteName string
}
如果您想使用ORM,则必须按照规则进行操作:)如果您想获得更多控制权,请尝试使用sqlx代替