小编Dan*_*zky的帖子

Golang:即使数据库关闭,Ping也会第二次成功

我遇到了一个有趣的问题,即即使数据库自第一次尝试以来已被杀死,db.Ping()也不会返回错误.

源代码如下:

import (
    "database/sql"
    "fmt"
    "log"
    "time"

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

type database struct {
    datasource string
    conn       *sql.DB
}

// Connect creates and initialises a Database struct
func (db *database) Connect(server, user, password, DBPort string) error {
    var err error

    db.datasource = fmt.Sprintf("%s:%s@/", user, password)
    db.conn, err = sql.Open(server, db.datasource)
    if err != nil {
        log.Fatal(err)
    }

    err = db.conn.Ping()
    if err != nil {
        db.conn.Close()
        return err
    }

    log.Println("Waiting for 15 seconds, kill the DB")
    <-time.After(15 * time.Second) …
Run Code Online (Sandbox Code Playgroud)

sql go

6
推荐指数
1
解决办法
1706
查看次数

标签 统计

go ×1

sql ×1