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

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

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

Go
一只斗牛犬 2021-07-27 13:04:46
在名为 dbutil 的单独程序包中使用 go-sql-driver 与 mysql 和 gorp 时,我收到以下错误错误 1045: Access denied for user 'root'@'localhost' (using password: NO)package dbutilimport (    "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 mainfunc main() {    dbmap := dbutil.InitDB()    err := dbmap.Db.Ping()    checkErr(err, "Ping failed")}如果我在主包中有 initDB() 函数,它就可以正常工作。只有在单独的包中与 martini 框架和 dbutil 一起使用时才会发生这种情况。使用 martini 框架并在同一个包中它仍然有效。我使用的是 Windows,MySQL-5.0.22。请帮忙。
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

我删除了 pkg 文件夹中生成的 .a 文件,然后没有收到拒绝访问错误。


查看完整回答
反对 回复 2021-08-02
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

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

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

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

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

panic: sql: database is closed


查看完整回答
反对 回复 2021-08-02
  • 2 回答
  • 0 关注
  • 221 浏览
慕课专栏
更多

添加回答

举报

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