为了账号安全,请及时绑定邮箱和手机立即绑定

共享数据库全局处理程序的问题

共享数据库全局处理程序的问题

Go
肥皂起泡泡 2021-09-27 15:39:57
我的代码如下:package mainimport (  "database/sql"  "fmt"  _ "github.com/mattn/go-sqlite3"  "log")var db *sql.DBfunc main() {  fmt.Println("Starting test ...")  db, err := sql.Open("sqlite3", "./data.db")  checkErr(err)  err = db.Ping()  checkErr(err)  fmt.Println(getNames())}func checkErr(err error) {  if err != nil {    log.Fatal(err)  }}func getNames() []string {  query := `select name from places`  rows, err := db.Query(query)  checkErr(err)  defer rows.Close()  var names []string  for rows.Next() {    var name string    rows.Scan(&name)    names = append(names, name)  }  return names}我遇到了这个问题,但这种方法对我不起作用。我正在使用 sqlite3 进行存储。我的目标很简单。在所有函数之间共享 db 处理程序。构建和运行时出现以下错误。Starting test ...panic: runtime error: invalid memory address or nil pointer dereference[signal 0xb code=0x1 addr=0x0 pc=0x411fc6e]goroutine 1 [running]:database/sql.(*DB).conn(0x0, 0x0, 0x0, 0x0)    /usr/local/Cellar/go/1.4.2/libexec/src/database/sql/sql.go:634   +0x7aedatabase/sql.(*DB).query(0x0, 0x421cb10, 0x17, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0)    /usr/local/Cellar/go/1.4.2/libexec/src/database/sql/sql.go:933 +0x43database/sql.(*DB).Query(0x0, 0x421cb10, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)    /usr/local/Cellar/go/1.4.2/libexec/src/database/sql/sql.go:924 +0xa6main.getNames(0x0, 0x0, 0x0)    /Users/kdys/Code/go/src/test/main.go:32 +0x94main.main()    /Users/kdys/Code/go/src/test/main.go:21 +0x188goroutine 5 [chan receive]:database/sql.(*DB).connectionOpener(0xc20802e000)    /usr/local/Cellar/go/1.4.2/libexec/src/database/sql/sql.go:589 +0x4ccreated by database/sql.Open    /usr/local/Cellar/go/1.4.2/libexec/src/database/sql/sql.go:452 +0x31cgoroutine 17 [syscall, locked to thread]:runtime.goexit()    /usr/local/Cellar/go/1.4.2/libexec/src/runtime/asm_amd64.s:2232 +0x1我在这里做错了什么?
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

你creatng局部db内变量main。当您调用 时getNames,它正在使用 global db,它仍然为零。



var err error

db, err = sql.Open("sqlite3", "./data.db")


查看完整回答
反对 回复 2021-09-27
  • 1 回答
  • 0 关注
  • 206 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信