登录
首页 >  Golang >  Go问答

GORM 可能因表名造成的混淆情况

来源:stackoverflow

时间:2024-03-15 15:33:26 149浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《GORM 可能因表名造成的混淆情况》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

我有一个 gorilla/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 没有创造任何东西。您需要先拨打migrate。这将创建您的表格。你可以这样做:

db.AutoMigrate(&user{})

此外,gorm 更喜欢约定而不是配置,它是 pluralizes table names by default。因此,创建表后,其名称将为 users

编辑:您可能需要通过将名称大写来使您的结构及其字段在外部可见。

好了,本文到此结束,带大家了解了《GORM 可能因表名造成的混淆情况》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>