fix: return init dialector error (#7379)

* fix: return init dialector error

* mock defer

* fix: skip AfterInitialize

---------

Co-authored-by: wenyazhou.13 <wenyazhou.13@bytedance.com>
This commit is contained in:
codingplz 2025-05-22 10:53:47 +08:00 committed by GitHub
parent e3037e4ef0
commit 8e7ab46c1b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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 {