From cfa57413c0eb8fa3bbce7854837d3fb1ab814133 Mon Sep 17 00:00:00 2001 From: xiyangxixian <2554758802@qq.com> Date: Mon, 24 Dec 2018 18:22:17 +0800 Subject: [PATCH] fix parse dsn --- common/config.go | 5 +++-- common/config_test.go | 4 ++-- common/testdata/TestParseDSN.golden | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/common/config.go b/common/config.go index c916818..2406139 100644 --- a/common/config.go +++ b/common/config.go @@ -289,9 +289,10 @@ func parseDSN(odbc string, d *dsn) *dsn { userInfo = res[1] hostInfo = res[2] query = res[4] - } else { + } else if res := regexp.MustCompile(`^(.*?)($|\?)(.*)`).FindStringSubmatch(odbc); len(res) > 3 { // hostInfo - hostInfo = odbc + hostInfo = res[1] + query = res[3] } // 解析用户信息 diff --git a/common/config_test.go b/common/config_test.go index 3e0b5b3..90f5a55 100644 --- a/common/config_test.go +++ b/common/config_test.go @@ -48,8 +48,8 @@ func TestParseDSN(t *testing.T) { "user:password@hostname:3307", "user:password@hostname:/database", "user:password@:3307/database", - "user@hostname/dbname", - "user:pwd:pwd@pwd/pwd@hostname/dbname", + "user@hostname/database", + "user:pwd:pwd@pwd/pwd@hostname/database", "user:password@", "hostname:3307/database", "@hostname:3307/database", diff --git a/common/testdata/TestParseDSN.golden b/common/testdata/TestParseDSN.golden index 0cf0dcf..25ae493 100644 --- a/common/testdata/TestParseDSN.golden +++ b/common/testdata/TestParseDSN.golden @@ -3,8 +3,8 @@ &common.dsn{Addr:"hostname:3307", Schema:"information_schema", User:"user", Password:"password", Charset:"utf8mb4", Disable:false, Version:999} &common.dsn{Addr:"hostname:3306", Schema:"database", User:"user", Password:"password", Charset:"utf8mb4", Disable:false, Version:999} &common.dsn{Addr:"127.0.0.1:3307", Schema:"database", User:"user", Password:"password", Charset:"utf8mb4", Disable:false, Version:999} -&common.dsn{Addr:"hostname:3306", Schema:"dbname", User:"user", Password:"", Charset:"utf8mb4", Disable:false, Version:999} -&common.dsn{Addr:"hostname:3306", Schema:"dbname", User:"user", Password:"pwd:pwd@pwd/pwd", Charset:"utf8mb4", Disable:false, Version:999} +&common.dsn{Addr:"hostname:3306", Schema:"database", User:"user", Password:"", Charset:"utf8mb4", Disable:false, Version:999} +&common.dsn{Addr:"hostname:3306", Schema:"database", User:"user", Password:"pwd:pwd@pwd/pwd", Charset:"utf8mb4", Disable:false, Version:999} &common.dsn{Addr:"127.0.0.1:3306", Schema:"information_schema", User:"user", Password:"password", Charset:"utf8mb4", Disable:false, Version:999} &common.dsn{Addr:"hostname:3307", Schema:"database", User:"", Password:"", Charset:"utf8mb4", Disable:false, Version:999} &common.dsn{Addr:"hostname:3307", Schema:"database", User:"", Password:"", Charset:"utf8mb4", Disable:false, Version:999} -- GitLab