Есть ли правильный способ подключения к MySQL? - PullRequest
1 голос
/ 17 января 2020

Я натолкнулся на документацию, в которой говорится:

sql .DB объект предназначен для длительного использования. Не открывайте () и не закрывайте базы данных часто. Вместо этого создайте один sql .DB-объект для каждого отдельного хранилища данных, к которому вам нужно получить доступ

source

И, немного покопавшись, я обнаружил, что в основном открываемый код соединение в файле обработчика так:

func dbConn() (db *sql.DB) {
  dbDriver := "mysql"
  dbUser := "root"
  dbPass := "root"
  dbName := "goblog"
  db, err := sql.Open(dbDriver, dbUser+":"+dbPass+"@/"+dbName)
  if err != nil {
    panic(err.Error())
  }
  return db
}

source

И для доступа к БД

 db := dbConn()

Это вызывается в функциях который должен использовать его, насколько я понимаю, это откроет соединение, а затем закроет его, когда оно достигнет конца указанной функции.

Не будет ли это нарушать приведенную выше цитату?

1 Ответ

2 голосов
/ 17 января 2020

Пример написан просто плохо, и да, вы не должны Open и Close, если только не разные хранилища данных.

Open возвращает DB и

DB - это дескриптор базы данных, представляющий пул из нуля или более базовых соединений. Это безопасно для одновременного использования несколькими goroutines

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...