Golang with GORM - sqlite尝试迁移时出错

vcirk6k6  于 2023-04-27  发布在  Go
关注(0)|答案(1)|浏览(468)

我正在开发一个Bot。为此,我决定使用sqlite DB和GORM作为ORM。现在我正在开发一个简单的“Connection”文件,它应该与sqlite db连接(与Conection.go在同一个文件夹中)并迁移预定义的结构体。

package database

import (
    _ "github.com/mattn/go-sqlite3"
    GlobalModels "goBot/modules/global/models"
    "gorm.io/driver/sqlite"
    "gorm.io/gorm"
    "log"
    "os"
)

func Connect() *gorm.DB {

    log.Print(os.Getenv("DB_PATH"))

    db, err := gorm.Open(sqlite.Open("db.sqlite"), &gorm.Config{})
    if err != nil {
        log.Fatal(err)
    }

    return db
}

func Migrate() {

    db := Connect()

    errUser := db.AutoMigrate(GlobalModels.User{})
    if errUser != nil {
        log.Fatal(errUser)
    }

    errUserFlags := db.AutoMigrate(GlobalModels.UserFlags{})
    if errUserFlags != nil {
        log.Fatal(errUserFlags)
    }
}

下面是预定义的结构User.go和UserFlags.go:

package models

import "gorm.io/gorm"

type User struct {
    gorm.Model
    Name   string `gorm:"column:name"`
    UserID int    `gorm:"column:user_id"`
    ChatID string `gorm:"column:chat_id"`
}

package models

import "gorm.io/gorm"

type UserFlags struct {
    gorm.Model
    UserID           int
    LastModuleChosen string `gorm:"column:last_module_chosen"`
    User             User   `gorm:"foreignKey:UserID"`
}

下面是主要的函数,我尝试在其中迁移这些模型:

func main() {

    database.Migrate()

    fmt.Println("Starting the bot...")
    startBot()
}

当我运行main.go时,出现以下两个错误:...\go\pkg\mod\gorm.io\driver\sqlite@v1.5.0\error_translator.go:9:35:2019 - 05 - 22 01:01:02未定义:sqlite3.Error
我已经确保,sqlite3被设置为环境变量在PATH中,我也安装了sqlite3 golang驱动程序“github.com/mattn/go-sqlite3”。可悲的是,我没有找到任何其他的解决方案在网络上,所以也许有人在这里可以帮助我解决这个问题?

提前感谢!

djp7away

djp7away1#

这似乎是当前版本的GORM sqlite驱动程序(v1.5.0)https://github.com/go-gorm/sqlite/issues/142的问题
看起来要么降级到1.4.4要么等待新的版本是必要的。

相关问题