在gorp中使用Select的问题

时间:2013-09-23 21:30:28

标签: go

尝试使用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")

1 个答案:

答案 0 :(得分:1)

你似乎并没有做任何特别错误的事情。我使用postgres驱动程序在本地运行您的示例(您没有指定您正在使用的驱动程序),它运行得很好 - 我的猜测是这里缺少一些信息。事情要确定:

  • 在尝试使用表之前,检查dbMapper.AddTableWithName(Post{}, "posts")是否已调用该表。通常在未调用AddTableWithName时返回您引用的错误。
  • 检查数据库中是否存在该表,以及您是否正在使用sql.Open("postgres", "user=postgres dbname=test")
  • 等连接到正确的数据库
  • 在实例化Gorp时,请确保您使用正确的方言:Postgres中的dbMapper := &gorp.DbMap{Db: db, Dialect: gorp.PostgresDialect{}}
  • 这可能与较旧版本的Gorp有关 - 自问这个问题以来已经过了几个月,现在升级可能会解决问题。

除此之外,我认为我们需要更多信息才能深入了解这一点。