gorp中使用Select的问题

尝试使用gorp进行 SELECT 时收到以下错误:


No table found for type: Post

这是我的代码的样子:


type Post struct {

    Id         int64  `db:"post_id"`

    CreatedAt  int64  `db:"created_at"`

    UpdatedAt  int64  `db:"updated"`

    Title      string `db:"title"`

}


var list []*Post

_, err := dbMapper.Select(&list, "SELECT * FROM posts")


if (err != nil) {

    fmt.Fprintf(writer, "%s", err)

    return

}


for _, item := range list {

    fmt.Fprintf(writer, "%s\n", item.Title)

}

我正在添加这样的表格:


dbMapper.AddTableWithName(Post{}, "posts").SetKeys(true, "Id")


郎朗坤
浏览 206回答 1
1回答

绝地无双

看起来你并没有做错什么。我使用postgres驱动程序在本地运行了您的示例(您没有指定您使用的是哪个驱动程序),它运行得很好 - 我猜是这里缺少一些信息。需要确保的事项:dbMapper.AddTableWithName(Post{}, "posts")在尝试使用该表之前检查是否已调用该表。您引用的错误通常在AddTableWithName未调用时返回。检查该表是否确实存在于您的数据库中,并且您正在使用(类似)连接到正确的数据库 sql.Open("postgres", "user=postgres dbname=test")实例化 Gorp 时,请确保使用正确的方言:dbMapper := &gorp.DbMap{Db: db, Dialect: gorp.PostgresDialect{}}在 Postgres 的情况下这可能与旧版本的 Gorp 有关 - 自从提出这个问题已经几个月了,现在升级可能会解决这个问题。除此之外,我认为我们需要更多信息来深入了解这个问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go