3

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")
4

1 に答える 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 に関連している可能性があります。この質問をしてから数か月が経過しています。今すぐアップグレードすると問題が解決する可能性があります。

それ以外に、この問題の根底にたどり着くには、さらに多くの情報が必要になると思います。

于 2014-05-25T12:19:31.070 に答える