diff --git a/gorm.go b/gorm.go index f1e3745f..0da218f6 100644 --- a/gorm.go +++ b/gorm.go @@ -4,6 +4,7 @@ import ( "context" "database/sql" "fmt" + "sort" "sync" "time" @@ -111,6 +112,12 @@ type Session struct { func Open(dialector Dialector, opts ...Option) (db *DB, err error) { config := &Config{} + sort.Slice(opts, func(i, j int) bool { + _, isConfig := opts[i].(*Config) + _, isConfig2 := opts[j].(*Config) + return isConfig && !isConfig2 + }) + for _, opt := range opts { if opt != nil { if err := opt.Apply(config); err != nil {