<span>golang操作mysql 报错:invalid memory address or nil pointer dereference</span>
#############################
错误写法:
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) } }
###########################