From 8e7ab46c1b865386bbb8f5322d64880ee5ce6f40 Mon Sep 17 00:00:00 2001 From: codingplz <449149812@qq.com> Date: Thu, 22 May 2025 10:53:47 +0800 Subject: [PATCH] fix: return init dialector error (#7379) * fix: return init dialector error * mock defer * fix: skip AfterInitialize --------- Co-authored-by: wenyazhou.13 --- gorm.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gorm.go b/gorm.go index 63a28b37..8b3cec69 100644 --- a/gorm.go +++ b/gorm.go @@ -135,12 +135,16 @@ func Open(dialector Dialector, opts ...Option) (db *DB, err error) { return isConfig && !isConfig2 }) + var skipAfterInitialize bool for _, opt := range opts { if opt != nil { if applyErr := opt.Apply(config); applyErr != nil { return nil, applyErr } defer func(opt Option) { + if skipAfterInitialize { + return + } if errr := opt.AfterInitialize(db); errr != nil { err = errr } @@ -192,6 +196,10 @@ func Open(dialector Dialector, opts ...Option) (db *DB, err error) { if db, _ := db.DB(); db != nil { _ = db.Close() } + + // DB is not initialized, so we skip AfterInitialize + skipAfterInitialize = true + return } if config.TranslateError {