首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在单独的包中使用go-sql-驱动程序的用户拒绝mysql错误访问。

在单独的包中使用go-sql-驱动程序的用户拒绝mysql错误访问。
EN

Stack Overflow用户
提问于 2014-03-05 10:45:08
回答 2查看 4.7K关注 0票数 0

当与mysql一起使用go-sql-驱动程序时,以及在一个名为dbutil error 1045的单独包中使用gorp时,我会收到以下错误:用户'root'@'localhost‘(使用密码: NO)的访问被拒绝。

代码语言:javascript
复制
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()函数,它可以正常工作。

只有在单独的包中使用马提尼框架和dbutil时才会发生这种情况。对于martini框架,在相同的包中,它仍然工作。

我使用的是windows,MySQL5.0.22。请帮帮忙。

谢谢你,克里希纳

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-07 16:53:20

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

票数 0
EN

Stack Overflow用户

发布于 2014-03-05 22:48:15

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

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

我认为,只有当您按照规范实际完成了Db时,您才应该关闭Db。

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

代码语言:javascript
复制
panic: sql: database is closed
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22195460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档