模型没有主键

时间:2018-07-19 22:07:06

标签: go

我将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

1 个答案:

答案 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代替