当与mysql一起使用go-sql-驱动程序时,以及在一个名为dbutil error 1045的单独包中使用gorp时,我会收到以下错误:用户'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()函数,它可以正常工作。
只有在单独的包中使用马提尼框架和dbutil时才会发生这种情况。对于martini框架,在相同的包中,它仍然工作。
我使用的是windows,MySQL5.0.22。请帮帮忙。
谢谢你,克里希纳
发布于 2014-03-07 16:53:20
我删除了在pkg文件夹中生成的.a文件,然后没有得到拒绝访问的错误。
发布于 2014-03-05 22:48:15
您的错误看起来像是登录失败。您的DSN设置是否适当?
除此之外,您应该删除defer db.Close()。
我认为,只有当您按照规范实际完成了Db时,您才应该关闭Db。
当我运行您的代码时,我实际上得到了这个错误
panic: sql: database is closedhttps://stackoverflow.com/questions/22195460
复制相似问题