diff --git a/internal/db/mysql_connection_params_test.go b/internal/db/mysql_connection_params_test.go index 765d867..f98de79 100644 --- a/internal/db/mysql_connection_params_test.go +++ b/internal/db/mysql_connection_params_test.go @@ -1,6 +1,7 @@ package db import ( + "database/sql" "net/url" "strings" "testing" @@ -121,6 +122,28 @@ func TestMySQLDSN_MapsJDBCUTF8EncodingToMySQLCharset(t *testing.T) { } } +func TestMySQLDSN_AsiaShanghaiLocationAcceptedByDriver(t *testing.T) { + t.Parallel() + + m := &MySQLDB{} + dsn, err := m.getDSN(connection.ConnectionConfig{ + Host: "127.0.0.1", + Port: 3306, + User: "root", + Database: "app", + ConnectionParams: "serverTimezone=GMT%2B8", + }) + if err != nil { + t.Fatalf("getDSN failed: %v", err) + } + + db, err := sql.Open("mysql", dsn) + if err != nil { + t.Fatalf("mysql driver should accept loc=Asia/Shanghai: %v", err) + } + _ = db.Close() +} + func TestMySQLDSN_URIParamsAndExplicitParamsPrecedence(t *testing.T) { t.Parallel() diff --git a/internal/db/timezone_data.go b/internal/db/timezone_data.go new file mode 100644 index 0000000..b2857a0 --- /dev/null +++ b/internal/db/timezone_data.go @@ -0,0 +1,6 @@ +package db + +// Embed the IANA time zone database so Windows deployments without zoneinfo +// files, such as Windows Server 2012, can still resolve locations like +// Asia/Shanghai when database drivers parse DSN time zone parameters. +import _ "time/tzdata"