Почему можно не получить данные из БД

«Почему можно не получить данные из БД» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Возможные причины:

  1. Нет соединения - проверь db.Ping(), настройки подключения
  2. Неправильный запрос - SQL синтаксис, имя таблицы/колонок
  3. Нет данных - запрос вернул 0 строк, используй rows.Next()
  4. Ошибка сканирования - несоответствие типов при Scan()
  5. Контекст отменен - context.Timeout или ручной cancel()
  6. Транзакция не закоммичена - забыт tx.Commit()

Пример:

var name string
err := db.QueryRow("SELECT name FROM users WHERE id=1").Scan(&name)
if err != nil {
    if err == sql.ErrNoRows {
        // Нет данных
    } else {
        // Другая ошибка
    }
}