From 3946e08c30b5016c20620aff0856be6c1be365c2 Mon Sep 17 00:00:00 2001 From: Liang Yuxuan Date: Tue, 7 Feb 2023 17:56:20 +0800 Subject: [PATCH] =?UTF-8?q?//=20=E5=85=BC=E5=AE=B9=E5=B7=B2=E6=9C=89?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=B8=AD=E7=9A=84=20"sqlite3"=20=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/init.go | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/models/init.go b/models/init.go index 9cebd613..9e2128db 100644 --- a/models/init.go +++ b/models/init.go @@ -9,10 +9,10 @@ import ( "github.com/gin-gonic/gin" "github.com/jinzhu/gorm" + _ "github.com/glebarez/go-sqlite" _ "github.com/jinzhu/gorm/dialects/mssql" _ "github.com/jinzhu/gorm/dialects/mysql" _ "github.com/jinzhu/gorm/dialects/postgres" - _ "github.com/glebarez/go-sqlite" ) // DB 数据库链接单例 @@ -23,20 +23,26 @@ func Init() { util.Log().Info("Initializing database connection...") var ( - db *gorm.DB - err error + db *gorm.DB + err error + confDataType string = conf.DatabaseConfig.Type ) + // 兼容已有配置中的 "sqlite3" 配置项 + if confDataType == "sqlite3" { + confDataType = "sqlite" + } + if gin.Mode() == gin.TestMode { // 测试模式下,使用内存数据库 db, err = gorm.Open("sqlite", ":memory:") } else { - switch conf.DatabaseConfig.Type { + switch confDataType { case "UNSET", "sqlite": // 未指定数据库或者明确指定为 sqlite 时,使用 SQLite 数据库 db, err = gorm.Open("sqlite", util.RelativePath(conf.DatabaseConfig.DBFile)) case "postgres": - db, err = gorm.Open(conf.DatabaseConfig.Type, fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=disable", + db, err = gorm.Open(confDataType, fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=disable", conf.DatabaseConfig.Host, conf.DatabaseConfig.User, conf.DatabaseConfig.Password, @@ -53,14 +59,14 @@ func Init() { conf.DatabaseConfig.Port) } - db, err = gorm.Open(conf.DatabaseConfig.Type, fmt.Sprintf("%s:%s@%s/%s?charset=%s&parseTime=True&loc=Local", + db, err = gorm.Open(confDataType, fmt.Sprintf("%s:%s@%s/%s?charset=%s&parseTime=True&loc=Local", conf.DatabaseConfig.User, conf.DatabaseConfig.Password, host, conf.DatabaseConfig.Name, conf.DatabaseConfig.Charset)) default: - util.Log().Panic("Unsupported database type %q.", conf.DatabaseConfig.Type) + util.Log().Panic("Unsupported database type %q.", confDataType) } } @@ -83,7 +89,7 @@ func Init() { //设置连接池 db.DB().SetMaxIdleConns(50) - if conf.DatabaseConfig.Type == "sqlite" || conf.DatabaseConfig.Type == "UNSET" { + if confDataType == "sqlite" || confDataType == "UNSET" { db.DB().SetMaxOpenConns(1) } else { db.DB().SetMaxOpenConns(100)