From eb2925829f63b96d885f514cff771b5c05d604db Mon Sep 17 00:00:00 2001 From: dzwvip Date: Tue, 12 Aug 2025 15:05:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9gorm-oracle=E7=9A=84=E9=A9=B1?= =?UTF-8?q?=E5=8A=A8=E5=8C=85=E4=B8=BAgo-ora,=E4=B8=8D=E5=86=8D=E4=BE=9D?= =?UTF-8?q?=E8=B5=96cgo=E5=92=8Coracle=20client?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/config/gorm_oracle.go | 10 +++++++++- server/initialize/gorm_oracle.go | 14 ++------------ server/service/system/sys_auto_code_oracle.go | 2 +- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/server/config/gorm_oracle.go b/server/config/gorm_oracle.go index 1bbeb46a..52cf21c0 100644 --- a/server/config/gorm_oracle.go +++ b/server/config/gorm_oracle.go @@ -1,10 +1,18 @@ package config +import ( + "fmt" + "net" + "net/url" +) + type Oracle struct { GeneralDB `yaml:",inline" mapstructure:",squash"` } func (m *Oracle) Dsn() string { - return "oracle://" + m.Username + ":" + m.Password + "@" + m.Path + ":" + m.Port + "/" + m.Dbname + "?" + m.Config + dsn := fmt.Sprintf("oracle://%s:%s@%s/%s?%s", url.PathEscape(m.Username), url.PathEscape(m.Password), + net.JoinHostPort(m.Path, m.Port), url.PathEscape(m.Dbname), m.Config) + return dsn } diff --git a/server/initialize/gorm_oracle.go b/server/initialize/gorm_oracle.go index 513359f0..80fa8fa8 100644 --- a/server/initialize/gorm_oracle.go +++ b/server/initialize/gorm_oracle.go @@ -1,18 +1,14 @@ package initialize import ( - //"github.com/dzwvip/oracle" + oracle "github.com/dzwvip/gorm-oracle" "github.com/flipped-aurora/gin-vue-admin/server/config" "github.com/flipped-aurora/gin-vue-admin/server/global" "github.com/flipped-aurora/gin-vue-admin/server/initialize/internal" - - //_ "github.com/godror/godror" - "gorm.io/driver/mysql" "gorm.io/gorm" ) // GormOracle 初始化oracle数据库 -// 如果需要Oracle库 放开import里的注释 把下方 mysql.Config 改为 oracle.Config ; mysql.New 改为 oracle.New func GormOracle() *gorm.DB { m := global.GVA_CONFIG.Oracle return initOracleDatabase(m) @@ -28,13 +24,7 @@ func initOracleDatabase(m config.Oracle) *gorm.DB { if m.Dbname == "" { return nil } - - oracleConfig := mysql.Config{ - DSN: m.Dsn(), // DSN data source name - DefaultStringSize: 191, // string 类型字段的默认长度 - } - - if db, err := gorm.Open(mysql.New(oracleConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil { + if db, err := gorm.Open(oracle.Open(m.Dsn()), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil { panic(err) } else { sqlDB, _ := db.DB() diff --git a/server/service/system/sys_auto_code_oracle.go b/server/service/system/sys_auto_code_oracle.go index 3cdb362e..fc3c43fb 100644 --- a/server/service/system/sys_auto_code_oracle.go +++ b/server/service/system/sys_auto_code_oracle.go @@ -64,7 +64,7 @@ WHERE lower(a.table_name) = ? AND lower(a.OWNER) = ? ORDER BY - a.COLUMN_ID; + a.COLUMN_ID ` err = global.GVA_DBList[businessDB].Raw(sql, tableName, dbName).Scan(&entities).Error