array(2) { ["docs"]=> array(0) { } ["count"]=> int(0) } 111string(0) "" int(1) int(10) int(70) int(8640000) string(13) "likecs_art_db" array(1) { ["query"]=> array(1) { ["match_all"]=> object(stdClass)#28 (0) { } } } array(1) { ["createtime.keyword"]=> array(1) { ["order"]=> string(4) "desc" } } int(10) int(0) int(8640000) array(2) { ["docs"]=> array(0) { } ["count"]=> int(0) } golang操作mysql 报错:invalid memory address or nil pointer dereference - 爱码网

#############################

 

错误写法:

var DB *sql.DB

func init() {
    
    DB, err := sql.Open("mysql", "tmp:tmp@tcp(10.10.10.10:3306)/mysql")
    if err != nil {
        return
    }
    DB.SetMaxOpenConns(3000) // 设置最大连接数
    err = DB.Ping()          // 尝试与数据库建立连接
    if err != nil {
        fmt.Println("Failed to connect to mysql,err" + err.Error())
        os.Exit(1)
    }
}

 

 

解决办法:

= 与 := 的区别

=     就是单纯的赋值

:=   具有声明变量的功能

改前 用的 :=

DB, err := sql.Open("mysql", dsn)

改后 用 =

var err error

DB, err = sql.Open("mysql", dsn)

 

 

 

正确写法:

var DB *sql.DB

func init() {
    var err error
    DB, err = sql.Open("mysql", "tmp:tmp@tcp(10.10.10.10:3306)/mysql")
    if err != nil {
        return
    }
    DB.SetMaxOpenConns(3000) // 设置最大连接数
    err = DB.Ping()          // 尝试与数据库建立连接
    if err != nil {
        fmt.Println("Failed to connect to mysql,err" + err.Error())
        os.Exit(1)
    }
}

 

 

 

 

 

 

 

 

 

 

 

###########################

相关文章: