一尘不染

如何在App Engine上使用go-sql-driver / mysql连接到Google Cloud SQL?

go

我正在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

当然,我已经根据文档检查了我的应用是否已在Cloud
SQL控制台的“访问控制”下得到了授权。我还尝试添加具有特权的MySQL用户,并使用它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
发出拉取请求了!任何见解或经验表示赞赏!


阅读 236

收藏
2020-07-02

共1个答案

一尘不染

这是 版本问题

如果仔细看,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!

作者的评论是让我感动的,@
Kyle建议尝试另一个驱动程序的方法(有效的)促使我重新阅读所有内容-谢谢!

2020-07-02