我正在开发一个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”。可悲的是,我没有找到任何其他的解决方案在网络上,所以也许有人在这里可以帮助我解决这个问题?
提前感谢!
1条答案
按热度按时间djp7away1#
这似乎是当前版本的GORM sqlite驱动程序(v1.5.0)https://github.com/go-gorm/sqlite/issues/142的问题
看起来要么降级到1.4.4要么等待新的版本是必要的。