golang mysql nil_golang 操作mysql 报错:invalid memory address or nil pointer dereference

三个文件:

aee092f2404e3a8ebdc692af53767754.png

db.go :

package config

import (

"database/sql"

"fmt"

"log"

"time"

_ "github.com/go-sql-driver/mysql"

)

const (

db_name = "text"

db_host = "127.0.0.1"

db_user = "root"

db_pass = "root"

db_port = 3306

)

var DB *sql.DB

func Init() {

dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8", db_user, db_pass, db_host, db_port, db_name)

DB, err := sql.Open("mysql", dsn)

if err != nil {

fmt.Println("sql.Open error", err)

return

}

//超时时间

DB.SetConnMaxLifetime(100 * time.Second)

// 最大连接数

DB.SetMaxOpenConns(100)

// 设置闲置的连接数

DB.SetMaxIdleConns(16)

if err := DB.Ping(); err != nil {

log.Fatal("DB.Ping = ", err)

}

}

work.go :

package config

import "fmt"

func GetOne() {

var userid int

_ = DB.QueryRow("select userid from s_work where itemid = 651054").Scan(&userid)

fmt.Println("userid = ", userid)

}

db_test.go :

package config

import (

"testing"

)

func TestInit(t *testing.T) {

Init()

GetOne()

}

用db_test.go测试 运行: go test -v .\db_test.go .\db.go .\work.go

显示错误:

f82caae5de14f9c036e67a8a9b457c38.png

解决办法:

= 与 := 的区别

=     就是单纯的赋值

:=   具有声明变量的功能

改前 用的 :=

DB, err := sql.Open("mysql", dsn)

改后 用 =

var err error

DB, err = sql.Open("mysql", dsn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值