我有一个大猩猩/mux网站,我需要使用GORM进行数据库处理。
首先,我只是想做一个hello world,看看我是否可以访问数据库。
所以有以下代码:
type user struct {
user_id int
username string
email string
pw_hash string
}
func gormo(w http.ResponseWriter, r *http.Request) {
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
var user user
db.Find(&user)
fmt.Println(user)
}
现在,数据库有一个名为user的表,我只想从它返回一些东西。当这段代码运行时,我得到以下命令行错误:
no such table: users
[0.217ms] [rows:0] SELECT * FROM `users`
这很奇怪,在我的代码中没有任何地方有任何叫做"用户"的东西,在我的数据库中也没有。这是从哪里来的,为什么GORM似乎把它放在那里?
您的数据库中还没有任何内容。好吧,反正不是GORM创造的。首先需要进行迁移。这将创建您的表。你可以这样做:
db.AutoMigrate(&user{})
此外,GORM更喜欢约定而不是配置,默认情况下它将表名复数化。因此,一旦创建了表,它的名称将是users
。
编辑:你可能需要让你的结构,连同它的字段,通过大写他们的名字,外部可见。