猿问

无法连接到数据库:数据库已关闭

我有以下项目结构:


-main.go

-db

--dbinit.go

我dbinit.go有以下代码:


package db


import (

    "database/sql"

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

)


var Db *sql.DB

var err error


func init() {

    Db, err = sql.Open("mysql", "myDBCreds")

    defer Db.Close()

}

我有main.go:


package main 


import (

    db "./db"

)


func main() {


    defer db.Db.Close()


        sqlStatement := `INSERT INTO table (field1, field2)

            VALUES ($1, $2)

        `

        _, err := db.Db.Exec(sqlStatement, param1, param2)

        if err != nil {

            panic(err)

        }

但main.go不断抛出错误:


sql:数据库已关闭


我究竟做错了什么?


凤凰求蛊
浏览 93回答 1
1回答

有只小跳蛙

来自之前提出的问题返回的数据库对于多个 goroutine 并发使用是安全的,并维护自己的空闲连接池。因此,Open 函数应该只调用一次。很少需要关闭数据库。又说,不要关闭它。
随时随地看视频慕课网APP

相关分类

Go
我要回答