From 590508ae35acc476ffc4839507af61e5082a0df5 Mon Sep 17 00:00:00 2001 From: Tom Jenkinson Date: Sat, 26 Oct 2019 19:56:56 +0100 Subject: [PATCH 1/2] prevent ErrBadConn from driver.Open() because it seems this error is only meant to be internal, and if `ErrBadConn` is returned from here it can also be returned from the public api See some confusion about this here: https://github.com/go-sql-driver/mysql/pull/1020 And a fix in the postgres driver here: https://github.com/lib/pq/commit/04c77ed03f9b391050bec3b5f2f708f204df48b2 --- src/database/sql/sql.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go index 0f5bbc01c9ec93..7f67203f23980d 100644 --- a/src/database/sql/sql.go +++ b/src/database/sql/sql.go @@ -685,7 +685,11 @@ type dsnConnector struct { } func (t dsnConnector) Connect(_ context.Context) (driver.Conn, error) { - return t.driver.Open(t.dsn) + conn, err := t.driver.Open(t.dsn) + if err == driver.ErrBadConn { + return conn, fmt.Errorf("sql: driver open() returned ErrBadConn. ErrBadConn should only be returned from existing connections") + } + return conn, err } func (t dsnConnector) Driver() driver.Driver { From cfda5c7422376938313c464a38c235bea93527bd Mon Sep 17 00:00:00 2001 From: Tom Jenkinson Date: Sat, 26 Oct 2019 20:06:45 +0100 Subject: [PATCH 2/2] fix case --- src/database/sql/sql.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go index 7f67203f23980d..006fb5cb30c711 100644 --- a/src/database/sql/sql.go +++ b/src/database/sql/sql.go @@ -687,7 +687,7 @@ type dsnConnector struct { func (t dsnConnector) Connect(_ context.Context) (driver.Conn, error) { conn, err := t.driver.Open(t.dsn) if err == driver.ErrBadConn { - return conn, fmt.Errorf("sql: driver open() returned ErrBadConn. ErrBadConn should only be returned from existing connections") + return conn, fmt.Errorf("sql: driver Open() returned ErrBadConn. ErrBadConn should only be returned from existing connections") } return conn, err }