我有一个 gorilla /多线程站点,需要使用GORM进行数据库处理。
首先,我只是想像一个世界一样,看看我是否可以访问数据库。
因此,具有以下代码:
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不会创造任何东西。您需要先migrate。这将创建您的表。您可以这样做:
db.AutoMigrate(&user{})
另外,GORM更喜欢约定而不是配置,它更喜欢pluralizes table names by default。因此,一旦创建了表,其名称将为users
。编辑:您可能需要通过大写名称来使结构及其字段在外部可见。
关于go - GORM似乎是自己制造表名的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66211442/