gpt4 book ai didi

mysql错误在单独的包中使用时拒绝使用go-sql-driver的用户访问

转载 作者:数据小太阳 更新时间:2023-10-29 03:29:18 24 4
gpt4 key购买 nike

当在名为 dbutil 的单独包中使用 go-sql-driver 和 mysql 和 gorp 时,我收到以下错误 错误 1045:用户 'root'@'localhost' 的访问被拒绝(使用密码:NO)

package dbutil

import (
"cropz/structs"
"database/sql"
"github.com/coopernurse/gorp"
_ "github.com/go-sql-driver/mysql"
"log"
)

func InitDB() *gorp.DbMap {
// connect to db
db, err := sql.Open("mysql", "root:pass@tcp(127.0.0.1:3306)/jsl")
defer db.Close()

err = db.Ping()
checkErr(err, "Ping failed")

// construct a gorp DbMap
dbmap := &gorp.DbMap{Db: db, Dialect: gorp.MySQLDialect{"InnoDB", "UTF8"}}

return dbmap
}


package main

func main() {

dbmap := dbutil.InitDB()
err := dbmap.Db.Ping()
checkErr(err, "Ping failed")
}

如果我在主包中有 initDB() 函数,它可以正常工作。

只有在单独的包中与 martini 框架和 dbutil 一起使用时才会发生这种情况。使用 martini 框架并在同一个包中它仍然有效。

我正在使用 windows,MySQL-5.0.22。请帮忙。

谢谢,奎师那

最佳答案

您的错误看起来像是登录失败。您的 DSN 设置是否正确?

除此之外,您应该删除 defer db.Close()

我认为您应该只在根据规范实际完成 Db 后才关闭它。

当我运行你的代码时,我实际上得到了这个错误

panic: sql: database is closed

关于mysql错误在单独的包中使用时拒绝使用go-sql-driver的用户访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22195460/

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