From c1ea73036715018a1bb55cdb8690441044e13a76 Mon Sep 17 00:00:00 2001 From: black Date: Thu, 1 Jun 2023 10:54:36 +0800 Subject: [PATCH] fix: avoid panic when open fails --- gorm.go | 2 +- tests/gorm_test.go | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gorm.go b/gorm.go index 84d4b4333..46d1843d3 100644 --- a/gorm.go +++ b/gorm.go @@ -181,7 +181,7 @@ func Open(dialector Dialector, opts ...Option) (db *DB, err error) { err = config.Dialector.Initialize(db) if err != nil { - if db, err := db.DB(); err == nil { + if db, _ := db.DB(); db != nil { _ = db.Close() } } diff --git a/tests/gorm_test.go b/tests/gorm_test.go index 9827465cc..4c31b88b4 100644 --- a/tests/gorm_test.go +++ b/tests/gorm_test.go @@ -3,9 +3,19 @@ package tests_test import ( "testing" + "gorm.io/driver/mysql" + "gorm.io/gorm" ) +func TestOpen(t *testing.T) { + dsn := "gorm:gorm@tcp(localhost:9910)/gorm?loc=Asia%2FHongKong" // invalid loc + _, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) + if err == nil { + t.Fatalf("should returns error but got nil") + } +} + func TestReturningWithNullToZeroValues(t *testing.T) { dialect := DB.Dialector.Name() switch dialect {