gpt4 book ai didi

postgresql - 无法返回数据库对象。

转载 作者:IT王子 更新时间:2023-10-29 02:33:36 24 4
gpt4 key购买 nike

这是我使用 postgres 数据库的代码。

package main

import (
"database/sql"
_ "github.com/lib/pq"
"fmt"
"log"
)

//Details required for connection
const (
HOST = "HOSTNAME"
USER = "USER"
PASSWORD = "PASSWORD"
DATABASE = "DB"
)

func Create() (*sql.DB) {

dbinfo := fmt.Sprintf("host=%s user=%s password=%s dbname=%s", HOST, USER, PASSWORD, DATABASE)
db,err := sql.Open("postgres", dbinfo)
defer db.Close()

if (err != nil) {
log.Fatal(err)
}

err = db.Ping()

if err != nil {
log.Fatal(err)
}

return db
}


func main() {
db := Create()
querStmt, err := db.Prepare("select count(*) from table")

if err != nil {
fmt.Printf("Cannot prepare query\n")
log.Fatal(err)
}
res, err := querStmt.Exec()
if err != nil {
fmt.Printf("Cannot execute query\n")
log.Fatal(err)
}

fmt.Printf("%v\n", res)
}

运行这段代码时出现这个错误

Cannot prepare query
2016/03/09 16:57:23 sql: database is closed

如果我从 Create() 运行查询,那么它会完美地工作,但在 main()Create() 返回的数据库对象上做同样的事情> 不工作。感谢帮助。

最佳答案

当您从 Create 返回时,您的数据库已关闭,因为您的 defer 在其中而不是在 main 中。将延迟移动到 main,它应该按预期工作。

关于postgresql - 无法返回数据库对象。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35897251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com