错误信息:
panic: runtime error: invalid memory address or nil pointer dereference
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x1 addr=0x20 pc=0x62c1b5]
goroutine 1 [running]:
sync.(*Mutex).Lock(...)
D:/Go/src/sync/mutex.go:74
database/sql.(*DB).Close(0x0, 0x63e0ca, 0x6d5345)
D:/Go/src/database/sql/sql.go:810 +0x45
panic(0x6823e0, 0x8da360)
D:/Go/src/runtime/panic.go:679 +0x1c0
sync.(*Mutex).Lock(...)
D:/Go/src/sync/mutex.go:74
database/sql.(*DB).conn(0x0, 0x735480, 0xc00000c220, 0x1, 0x1, 0x730660, 0xc000038c80)
D:/Go/src/database/sql/sql.go:1132 +0x48
database/sql.(*DB).PingContext(0x0, 0x735480, 0xc00000c220, 0x2d, 0x0)
D:/Go/src/database/sql/sql.go:782 +0x97
database/sql.(*DB).Ping(...)
D:/Go/src/database/sql/sql.go:800
main.main()
I:/goproject/goToDb.go:12 +0xd0
如果你是在实现go连接MySQL时出现的如上述错误,可能是缺少了MySQL驱动包。以下是我在学习过程中遇到情况以及解决方式,希望能够有所帮助。
(windows环境下的操作)
连接MySQL数据库:
前提:MySQL,GO均已安装好并正确配置了环境变量(环境变量配置中,系统参数GOPATH对应的路径是你go安装的路径即可)。
Go要连接MySQL数据库时,需要安装相应的驱动。到下面路径下载压缩包:
https://github.com/go-sql-driver/mysql
下载成功后解压到安装的go路径,下有src和pkg两个目录,将其分别解压到这两个目录下。可在当前目录下直接进入cmd窗口,执行命令:go install mysql-master 即可。
再回到go文件中,import处导入相关驱动包名,继续做连接访问数据库的操作,即可成功。