mysql - 谷歌应用引擎 golang,驱动程序 : bad connection

标签 mysql google-app-engine go

我有一些在本地 GAE 服务器上运行的代码,但是一旦我将它发布到 GAE,它就会抛出错误“驱动程序:连接错误”。

下面的代码生成了一个新的 *sql.DB:

func NewDb() (*sql.DB, error) {
  cloud := os.Getenv("dbcloud")
  local := os.Getenv("dblocal")
  if appengine.IsDevAppServer() {
    return sql.Open("mysql", "root@tcp("+local+":3306)/dbo")
  }
  return sql.Open("mysql", "root@cloudsql("+cloud+")/dbo")
}

在我的 app.yaml 中有以下内容:

env_variables:
  dbcloud: 'projectid:instancename'
  dblocal: 'xxx.xxx.xxx.xxx'

它似乎正确地返回了一个新的 *sql.DB,但是一旦我开始使用准备好的语句,事情就开始崩溃了。

db, err := NewDb() // err is nil
stmt, err := db.Prepare("INSERT INTO dbo.Users (Id) VALUES (?)") // err is driver: bad connection

我已经为此奋斗了一个小时,我可能正在做一些非常愚蠢的事情,我们将不胜感激!

最佳答案

我最终需要更改我的 dbcloud 变量以包括从以下位置更改的 SQL 服务器区域:

'projectid:instancename'

收件人:

'projectid:regionname:instancename'

不知道为什么我需要这样做,因为它不在 https://github.com/go-sql-driver/mysql 的文档中但现在一切正常!

关于mysql - 谷歌应用引擎 golang,驱动程序 : bad connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38956385/

相关文章:

MySQL 尝试更改 Null 时触发错误

MySQL:可以从信息模式中提取存储过程信息吗?

mysql - 我在nodejs中有一个函数mysql,无法解析结果

java - Wicket 未在 Google App Engine (GAE) 上运行

java - Google App Engine (Java) 中的 "OR"运算符

mongodb - 通过 mgo 驱动程序设置 MongoDB 写关注

go sql driver + context canceled 似乎是 "leak"goroutines?

mysql - 具有条件限制和顺序的cakephp查询

java - 如何在 java Google App Engine 中强制执行唯一字段值

Go 工作区与自定义文件夹结构