golang panic: runtime error: invalid memory address or nil pointer dereference [

今天做消息队列持久化存储服务过程中,golang操作mysql 报错:

panic: runtime error: invalid memory address or nil pointer dereference [

经过反复查找,原来是变量定义问题 做个记录,以后再有问题可以做个参考,原始代码:

var Db *sql.DB

func init() {
    Db, err := sql.Open("mysql", "root:[email protected]/test")
    if err != nil {
        panic(err)
    }
}
/**
 * 记录访问日志
 */
func (c Commonlog) saveViewlog() {
    SqlIn := fmt.Sprintf("insert into q_orgviewlog (viewnum, orgid, statisticsdate) values (1, %d, %d)", c.Orgid, time.Now().Unix())
    _, err := Db.Exec(SqlIn)

    if err != nil {
        fmt.Println("用户SQL错误,执行时间:", time.Now().String(), "错误内容:", err.Error(), "SQL:", sqlUpdate)
        fmt.Println(err)
    } else {
        fmt.Println("更新成功")
    }
}

然后就报了上面的错误

经过反复查询,Db变量定义的问题,:=只在当前方法内有效,于是修改如下:

var Db *sql.DB

func init() {
    var err error
    Db, err = sql.Open("mysql", "root:[email protected]/test")
    if err != nil {
        panic(err)
    }
}
/**
 * 记录访问日志
 */
func (c Commonlog) saveViewlog() {
    SqlIn := fmt.Sprintf("insert into q_orgviewlog (viewnum, orgid, statisticsdate) values (1, %d, %d)", c.Orgid, time.Now().Unix())
    _, err := Db.Exec(SqlIn)

    if err != nil {
        fmt.Println("用户SQL错误,执行时间:", time.Now().String(), "错误内容:", err.Error(), "SQL:", sqlUpdate)
        fmt.Println(err)
    } else {
        fmt.Println("更新成功")
    }
}

执行成功

时间: 2025-01-08 10:01:16

golang panic: runtime error: invalid memory address or nil pointer dereference [的相关文章

go text/template html/template invalid memory address or nil pointer dereference

2017/08/14 20:06:10 http: panic serving 172.22.27.131:56324: runtime error: invalid memory address or nil pointer dereference goroutine 19 [running]: net/http.(*conn).serve.func1(0xc420171e00) /usr/local/go/src/net/http/server.go:1693 +0xd0 panic(0x7

一次ORA-00130: invalid listener address错误

登录数据库,提示: ora11g>sqlplus dcsopen/dcsopen1 SQL*Plus: Release 11.2.0.1.0 Production on Mon Jan 5 18:49:31 2015 Copyright (c) 1982, 2009, Oracle.  All rights reserved. ERROR: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist

PRCT-1302 the OCR has an invalid ip address

PRCT-1302 the OCR has an invalid ip address 1. 报错信息 an internal error occurred within cluster verification framework unable to obtain network interface list from oracle clusterware PRCT-1302 the OCR has an invalid ip address format 11.2.0.3OracleRAC软

golang panic的错误回收和简单的使用场景

golang panic的错误回收和简单的使用场景 代码示例 package main import( "fmt" ) func main(){ _,err:=deferPanic(8,0) if err!=nil{ fmt.Println(err) } fmt.Println("这里还是会执行的") } //panic 回收测试 func deferPanic(x,y int)(z int,err error){ //使用defer回收接收panic值 defer

在windows下运行docker的问题【Error getting IP address: ***】

环境配置系统:windows 10docker:Docker Toolbox https://www.docker.com/products/docker-toolbox 问题描述windows下安装完Docker Toolbox后运行Docker Quickstart Terminal可能会看到如下错误 Creating Machine default... Running pre-create checks... Creating machine... Error creating mach

win7,M?i?n?d?m?a?n?a?g?e?r?2?0?1?2使用模板时弹出Runtime error R6025解决方法

Mindjet.MindManager2012.v10.0在应用个别模板时提示"参数错误",然后自动关闭. 解决办法: 如果是win7系统,可以进入C:\Users\(用户名)\AppData\Local\Mindjet\MindManager\10\Library\ENU\Templates, 可以看到如下模板:Management/Meetings and Events/Personal Productivity/Problem Solving/Project Management

C Run-Time Error R6034问题的解决

1.问题描述 这两天一直在用vs2008编写一个小项目,需要在c++代码中通过命令行的方式调用cl.exe和link.exe,也就是给编译器cl和链接器link传递参数,然后编译链接生成可执行文件exe.最终生成的result.exe运行时老出现Runtime Error R6034 An application has made an attempt to load the C runtime library incorrectly.的错误,围绕这个问题,我查了两天的资料,最后终于解决了..

Runtime Error

啊啊啊,最近好多Runtime Error,心塞. runtime  error (运行时错误)就是程序运行到一半,程序就崩溃了. 比如说: ①除以零 ②数组越界:int a[3]; a[10000000]=10; ③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10; ④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10; ⑤数组开得太大

关于在xml文件中的 error: invalid symbol: 'switch' 错误

在xml布局文件中使用Switch控件时,出现error: invalid symbol: 'switch'报错,代码如下: <Switch android:id="@+id/switch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="开启" android:textOff="关