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

时间:2019-08-07 00:54:05

标签: mysql go

我具有以下项目结构:

-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:数据库已关闭

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

来自先前提出的问题

  

返回的数据库可安全地供多个goroutine并发使用,并维护其自己的空闲连接池。因此,Open函数应仅被调用一次。几乎不需要关闭数据库。

再也不要关闭它。