Use modernc.org/sqlite to support CGO_ENABLED=0

This commit is contained in:
DullJZ
2025-09-24 14:15:36 +08:00
parent 5230c36ad3
commit 71a72600fe
+8 -3
View File
@@ -15,6 +15,7 @@ import (
"gorm.io/driver/sqlite" "gorm.io/driver/sqlite"
"gorm.io/gorm" "gorm.io/gorm"
"gorm.io/gorm/logger" "gorm.io/gorm/logger"
_ "modernc.org/sqlite"
) )
// DB 全局数据库连接 // DB 全局数据库连接
@@ -79,7 +80,7 @@ func Initialize(cfg *config.DatabaseConfig) error {
return nil return nil
} }
// connectSQLite 连接SQLite数据库 // connectSQLite 连接SQLite数据库(使用modernc.org/sqlite,支持非CGO
func connectSQLite(dsn string, gormConfig *gorm.Config) (*gorm.DB, error) { func connectSQLite(dsn string, gormConfig *gorm.Config) (*gorm.DB, error) {
// 创建数据目录(如果不存在) // 创建数据目录(如果不存在)
dir := filepath.Dir(dsn) dir := filepath.Dir(dsn)
@@ -94,10 +95,14 @@ func connectSQLite(dsn string, gormConfig *gorm.Config) (*gorm.DB, error) {
dsn = fmt.Sprintf("%s?_journal_mode=WAL&_timeout=5000&_synchronous=NORMAL&_cache_size=10000", dsn) dsn = fmt.Sprintf("%s?_journal_mode=WAL&_timeout=5000&_synchronous=NORMAL&_cache_size=10000", dsn)
} }
return gorm.Open(sqlite.Open(dsn), gormConfig) // 使用modernc.org/sqlite驱动(纯Go实现,无需CGO
dialector := sqlite.Dialector{
DriverName: "sqlite",
DSN: dsn,
} }
// connectMySQL 连接MySQL数据库 return gorm.Open(dialector, gormConfig)
} // connectMySQL 连接MySQL数据库
func connectMySQL(dsn string, gormConfig *gorm.Config) (*gorm.DB, error) { func connectMySQL(dsn string, gormConfig *gorm.Config) (*gorm.DB, error) {
// MySQL DSN示例: user:password@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local // MySQL DSN示例: user:password@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local