Golang mariadb не удалось выполнить пинг «драйвер: плохое соединение»

версия МариадБ: 10.5.22

db.Ping() возвращается driver: bad connection

package main

import (
    "database/sql"
    "log"
    "net/http"
    "os"
    "time"

    "github.com/gin-gonic/gin"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, err := sql.Open("mysql", os.Getenv("DATABASE_URL"))

    if err != nil {
        log.Fatal(err)
    }

    db.SetMaxOpenConns(25)
    db.SetMaxIdleConns(25)
    db.SetConnMaxLifetime(2 * time.Minute)

    router := gin.Default()

    api := router.Group("/api")
    api.GET("/health", func(c *gin.Context) {
        err := db.Ping()

        if err != nil {
            c.JSON(http.StatusInternalServerError, gin.H{
                "error": err.Error(),
            })
            return
        }

        c.JSON(http.StatusOK, gin.H{
            "message": "OK",
        })
    })

    if err := router.Run(":8080"); err != nil {
        log.Fatal(err)
    }
}

логи сервера:

[mysql] 2024/07/09 02:04:23 connection.go:49: unexpected EOF
[mysql] 2024/07/09 02:04:34 connection.go:49: unexpected EOF
[mysql] 2024/07/09 02:04:44 connection.go:49: unexpected EOF

Я пробовал играть с различными настройками БД, но безуспешно.

    db.SetMaxOpenConns(25)
    db.SetMaxIdleConns(25)
    db.SetConnMaxLifetime(2 * time.Minute)

Можете ли вы попробовать другую функцию подключения, например, выполнить SELECT 1?

danblack 09.07.2024 04:47

@danblack та же ошибка API: {"ошибка": "драйвер: плохое соединение"} журналы сервера: [mysql] 2024/07/09 03:29:58 Connection.go:49: неожиданный EOF

elixirfan2001 09.07.2024 05:31

Измените свою основную функцию, чтобы она регистрировала более подробную информацию в случае сбоя соединения: db, err := sql.Open("mysql", dsn) if err != nil { log.Fatalf("Ошибка открытия базы данных: %v", err) } // Проверяем правильность соединения с базой данных err = db.Ping() if err != nil { log.Fatalf("Ошибка пингования базы данных: %v", err) }

Adesoji Alu 09.07.2024 14:42

@AdesojiAlu не дал мне никакой новой информации. журнал: 024/07/10 00:42:44 Error pinging database: driver: bad connection

elixirfan2001 10.07.2024 02:43
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
4
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мой пароль не был правильно проанализирован, поскольку он имеет специальный символ. Использование formatDSN() решило мою проблему.

Другие вопросы по теме