当在单独的包中使用go-sql-driver时,出现了”Access denied for user”的MySQL错误。

huangapple go评论128阅读模式
英文:

mysql error Access denied for user with go-sql-driver when used in separate package

问题

在使用go-sql-driver、mysql和gorp时,在名为dbutil的单独包中使用时,我遇到了以下错误:

错误1045:用户'root'@'localhost'被拒绝访问(未使用密码)

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

只有在与martini框架和单独包中的dbutil一起使用时才会出现此问题。与martini框架在同一个包中使用时仍然可以正常工作。

我正在使用Windows和MySQL-5.0.22。请帮忙解决。

谢谢,
Krishna

英文:

I am getting the following error when using with go-sql-driver with mysql and gorp when using in a separate package called dbutil
Error 1045: Access denied for user 'root'@'localhost' (using password: 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")
}

If I have the initDB() function in the main package, it works fine.

This happens only if used with martini framework and dbutil in separate package. With martini framework and in the same package it still works.

I am using windows, MySQL-5.0.22. Please help.

thanks,
Krishna

答案1

得分: 0

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

除此之外,你应该移除defer db.Close()

根据规范,我认为你只应该在实际完成后关闭数据库。

当我运行你的代码时,实际上会出现以下错误:

panic: sql: database is closed
英文:

Your error looks like a login failure. Is your DSN setup appropriately?

Other than that you should remove the defer db.Close()

I believe you should only be closing the Db when you are actually done with it according to the spec.

When I run your code I actually get this error

panic: sql: database is closed

答案2

得分: 0

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

英文:

I deleted the .a files generated in the pkg folder and then didn't get the access denied error.

huangapple
  • 本文由 发表于 2014年3月5日 18:45:08
  • 转载请务必保留本文链接:https://go.coder-hub.com/22195460.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定