如何使用App Engine上的GO-SQL-DRIVER/MYSQL连接到Google Cloud SQL



我正在使用go on App Engine中的GO-SQL-DRIVER/MYSQL驱动程序来连接到这样的云SQL实例:

import (
   "database/sql"
   _ "github.com/go-sql-driver/mysql"
)
db, dbErr := sql.Open("mysql", "root@cloudsql(project:instance)/database"
...
pingErr := db.Ping()

,但我得到了" 权限拒绝" pingErr

当然,我检查了我的应用程序在"访问控制"下的云SQL控制台中授权。我还尝试添加具有特权的MySQL用户并使用user:password代替root,甚至没有指定用户。

我在做什么错?

...

更新:

per @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支持添加到主分支,但最新版本为1.1,不包括它。

而不是go get github.com/go-sql-driver/mysql,您需要手动git clone https://github.com/go-sql-driver/mysql(主分支)到$GOPATH/src/然后部署到App Engine!

作者的这一评论是让我失望的原因, @Kyle的建议尝试另一个驱动程序(有效)激励我再次阅读所有内容 - 谢谢!

您给sql.Open的DSN(数据源名称)看起来不像文档中的一个:

import "database/sql"
import _ "<some mysql package>"
db, err := sql.Open("mysql", "cloudsql:my-instance*dbname/user/passwd")

来源:Go Appengine Cloud SQL参考

编辑:看起来您正在使用此处记录的SQL软件包使用正确的DSN格式。我那时我的猜测是它正确连接到数据库,但是要么没有被接受,要么出于任何原因而没有正确的权限。

相关内容

  • 没有找到相关文章

最新更新