golang使用mysql runtime error: invalid memory address or nil pointer dereference

这是一个golang作用域的坑,

var sqlDb  *sqlDB
func Test(){
    sqlDb, err := sql.Open("mysql","root:root@tcp(127.0.0.1:3306)/databaseName")
}

这段代码看似没有任何问题,但是在使用sqlDb对数据库进行操作时却报错

2019/04/11 14:32:08 [Recovery] 2019/04/11 - 14:32:08 panic recovered:
runtime error: invalid memory address or nil pointer dereference
原因就是
当我们在使用 := 时 会创建一个新的sqlDb变量,新的sqlDb会把全局变量sqlDb覆盖掉
正确操作

var SqlDB *sql.DB

func init() {
    var err error
    SqlDB, err =  sql.Open("mysql","root:root@tcp(127.0.0.1:3306)/databaseName")
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容