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

贝塔船长 · · 3908 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

这是一个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")
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:贝塔船长

查看原文:golang使用mysql runtime error: invalid memory address or nil pointer dereference

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3908 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传