我正在App Engine上的Go中使用go-sql-driver / mysql驱动程序来连接到Cloud SQL实例,如下所示:
import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) db, dbErr := sql.Open("mysql", "root@cloudsql(project:instance)/database" ... pingErr := db.Ping()
但是我收到了“ 拒绝许可 ”的信pingErr。
pingErr
当然,我已经根据文档检查了我的应用是否已在Cloud SQL控制台的“访问控制”下得到了授权。我还尝试添加具有特权的MySQL用户,并使用它user:password来代替root甚至不指定用户。
user:password
root
我究竟做错了什么?
…
更新:
根据@Kyle的建议,我尝试了替代驱动程序ziutek / mymysql,它可与以下代码一起使用:
import ( "database/sql" _ "github.com/ziutek/mymysql/godrv" _ "github.com/ziutek/mymysql/mysql" _ "github.com/ziutek/mymysql/native" ) db, dbErr := sql.Open("mymysql", "cloudsql:project:instance*database/user/password"
如果我能弄清楚出了什么问题,请猜是时候对go-sql-driver / mysql发出拉取请求了!任何见解或经验表示赞赏!
这是 版本问题 !
如果仔细看,App Engine支持已添加到master分支中,但是最新版本是1.1,并且不包含它。
相反的go get github.com/go-sql-driver/mysql,你需要手动git clone https://github.com/go-sql-driver/mysql(主分支)进入$GOPATH/src/和 随后 部署到App Engine!
go get github.com/go-sql-driver/mysql
git clone https://github.com/go-sql-driver/mysql
$GOPATH/src/
作者的评论是让我感动的,@ Kyle建议尝试另一个驱动程序的方法(有效的)促使我重新阅读所有内容-谢谢!