From 013f8b216a11c1d6bb68565d07a9082a50917e36 Mon Sep 17 00:00:00 2001 From: Lonely <641008175@QQ.COM> Date: Wed, 8 Feb 2023 19:35:48 +0800 Subject: [PATCH] improve Timezone escape for driver dm/mysql (#2412) --- contrib/drivers/dm/dm.go | 5 ++++- contrib/drivers/mysql/mysql.go | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/contrib/drivers/dm/dm.go b/contrib/drivers/dm/dm.go index f5f4c67b6..6e3678065 100644 --- a/contrib/drivers/dm/dm.go +++ b/contrib/drivers/dm/dm.go @@ -72,7 +72,10 @@ func (d *Driver) Open(config *gdb.ConfigNode) (db *sql.DB, err error) { // Demo of timezone setting: // &loc=Asia/Shanghai if config.Timezone != "" { - source = fmt.Sprintf("%s&loc%s", source, url.QueryEscape(config.Timezone)) + if strings.Contains(config.Timezone, "/") { + config.Timezone = url.QueryEscape(config.Timezone) + } + source = fmt.Sprintf("%s&loc%s", source, config.Timezone) } if config.Extra != "" { source = fmt.Sprintf("%s&%s", source, config.Extra) diff --git a/contrib/drivers/mysql/mysql.go b/contrib/drivers/mysql/mysql.go index 41ff15e77..39112245c 100644 --- a/contrib/drivers/mysql/mysql.go +++ b/contrib/drivers/mysql/mysql.go @@ -12,6 +12,7 @@ import ( "database/sql" "fmt" "net/url" + "strings" _ "github.com/go-sql-driver/mysql" "github.com/gogf/gf/v2/database/gdb" @@ -76,7 +77,10 @@ func (d *Driver) Open(config *gdb.ConfigNode) (db *sql.DB, err error) { config.User, config.Pass, config.Protocol, config.Host, config.Port, config.Name, config.Charset, ) if config.Timezone != "" { - source = fmt.Sprintf("%s&loc=%s", source, url.QueryEscape(config.Timezone)) + if strings.Contains(config.Timezone, "/") { + config.Timezone = url.QueryEscape(config.Timezone) + } + source = fmt.Sprintf("%s&loc=%s", source, config.Timezone) } if config.Extra != "" { source = fmt.Sprintf("%s&%s", source, config.Extra)