проекте, с драйвером postgres. Код подключения к бд:
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal(err)
}
defer db.Close()
Проблема в том что метода db.Close() не существует, проект не компилится, хотя во всех примерах использования драйвера, используется данный метод.
Куда копать?
не по теме, но если бы метод был — он бы отрабатывал у вас сразу и коллер получал бы уже закрытый db
Это пример, закрыть бд можно и в коллере. Во всех примерах используют данный метод, но у меня его нет 😆
ну либо примеры устарели, или же там клоз вызывалеся все таки на sql.DB
ну вот посмотри на свой код. ты возвращаешь бд - и тут же перед этим закрываешь ее. какой толк от нее системе?
x := postgres.Open(dsn) x.Close()
что нет?
https://pkg.go.dev/gorm.io/gorm#DB действительно нет метода Close() но есть такой пример import ( "database/sql" "gorm.io/gorm" ) sqlDB, err := sql.Open("mysql", "mydb_dsn") gormDB, err := gorm.Open(mysql.New(mysql.Config{ Conn: sqlDB, }), &gorm.Config{}) а вот как раз у типа sql.DB есть Close() метод https://pkg.go.dev/database/sql#DB.Close так что скорее да чем нет *читайте доки 😁
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) if err != nil { log.Fatal(err) } connection, _ := db.DB() defer connection.Close() Уже сам решил этот вопрос.
Обсуждают сегодня