爱堆栈,我的第一篇完整的出无奈。感谢您的意见!透过App Engine(第二代CLOUDSQL)连接到CLOUDSQL GO
- 创建App Engine的项目
- 创建的第二代MySQL实例在我的App Engine专案
- 创建的数据库的MySQL实例
- 在App Engine中,我激活 - >谷歌云壳牌< - - 。 (我在我的console.cloud.google.com的命令提示符下工作)
我已经复制了这个基本的GO程序来连接到我的MySQL实例。
我建立并运行它。 go build mysqlexample.go ./mysqlexample
我还没有能够实现成功的连接。你可以看到我尝试过的所有不同的连接字符串,它们的右边是我得到的响应。
我可以使用mysql管理员从本地windows机器连接。
帮助?
package main
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"log"
)
func main() {
const dbIP = "104.xxx.xx.x"
const dbInstanceName = "esp-1-dev:us-central1:espdev"
const dbName = "servpro"
const dbUserName = "root"
const dbPassword = "xxxxxxx"
const dbOpenString = dbUserName + ":" + dbPassword + "@/" + dbInstanceName + "/" + dbName //GETS RESPONSE default addr for network 'AppEngine:Zone:Project' unknown
//const dbOpenString = dbUserName + "@cloudsql(" + dbInstanceName + ")/" + dbName //GETS RESPONSE dial cloudsql: unknown network cloudsql
//const dbOpenString = dbUserName + "@/" //+ "?parseTime=true&loc=UTC" //GETS RESPONSE getsockopt: connection refused
//const dbOpenString = dbUserName + ":" + dbPassword + "@tcp(" + dbIP + ":3306)/" + dbName //GETS RESPONSE dial tcp 104.xxx.xxx.x:3306: getsockopt: connection timed out
// Got this from stack overflow. GoDocs are not updated to reflect 2nd Gen databases.
// http://stackoverflow.com/questions/38890022/tls-requested-but-server-does-not-support-tls-error-with-google-cloud-sql-2nd
//user:[email protected](copiedPastedInstanceConnectionName)/databaseName?charset=charset&collation=collation&tls=tlsConfigName&parseTime=true
//First Generation Connection String
//username:[email protected](appID:CloudSQLInstance)/databasename?parseTime=true&loc=UTC
db, err := sql.Open("mysql", dbOpenString);
defer db.Close()
log.Println("Attempting Ping of database....")
err = db.Ping()
if err != nil {
log.Println("db.Ping() failed: " + dbOpenString)
log.Println(err)
} else {
log.Println("Success!")
}
}
,如果你从App Engine的标准或App Engine的连接Flex你没有说。我怀疑你是从App Engine Flex连接的,但是阅读App Engine Standard文档/帖子。请确认。 – Vadim
我正在Google Cloud Shell中工作。制作程序,构建它,运行它。在部署解决方案并将其添加到yaml之前,我还没有选择使用Flex。我一直在做所有GO例子,我一直在做这个云壳环境。现在我想和云端SQL进行交谈并陷入困境。现在我认为我正在与谷歌云壳做斗争。我将部署我的应用程序并在今晚打开flex并发布结果。下面的连接字符串在云外壳中不起作用,但至少flex连接字符串给了我一个新消息...没有这样的文件目录 –
你应该在你的文章中更清楚地说明。在这种情况下,您应该不**遵循App Engine指令,因为它们用于从App Engine进行连接。从云端连接Shell有点复杂,您需要在shell中下载并运行Cloud SQL Proxy以便连接(使用我从App Engine Flex发布的相同连接字符串) – Vadim