当前位置: 首页 > 面试题库 >

从App Engine(第二代CloudSQL)GO连接到CloudSQL

薛望
2023-03-14
问题内容

爱堆栈,我的第一个帖子完全出于挫败感。感谢您的评论!

  • 创建了App Engine项目
  • 在我的App Engine项目中创建了第二代MySQL实例
  • 在MySQL实例中创建的数据库
  • 在App Engine中,我激活-> Google Cloud Shell <-。(我正在console.cloud.google.com中的命令提示符下工作)

我已经复制了这个基本的GO程序以连接到我的MySQL实例

我构建并运行它。去建立mysqlexample.go ./mysqlexample

我无法成功建立连接。您可以看到我尝试过的所有各种连接字符串,它们的右边是我得到的响应。

我可以使用mysql admin从本地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:password@cloudsql(copiedPastedInstanceConnectionName)/d‌​atabaseName?charset=‌​charset&collation=co‌​llation&tls=tlsConfi‌​gName&parseTime=true
    //First Generation Connection String    
        //username:password@cloudsql(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标准:

user:password@cloudsql(INSTANCE_CONNECTION_NAME)/dbname

App Engine弹性:

user:password@unix(/cloudsql/INSTANCE_CONNECTION_NAME)/dbname


 类似资料:
  • 问题内容: 我使用Google Cloud SQL和MySQL服务器开发了一些GO库。当我导入`appengine / cloudsql时,发生以下错误。 我知道这个套件仅适用于Google App Engine,并不存在于其他任何地方。 我想知道如何在单个库中将其用于GAE和其他环境的标准sql库。 PS:我可以正确设置Google App Engine SDK。我的问题与此无关。希望我的库可以

  • 我正在尝试使用Firebase的云函数来构建一个API,该API与Google Cloud SQL(PostgreSQL)实例进行对话。 我正在使用HTTP(S)触发器。 当我用白名单列出桌面的IP地址时,我可以通过函数的节点连接到云SQL。来自本地计算机的js代码。但当我部署时,我无法连接到白名单,也无法计算Firebase功能服务器的主机IP地址。 您如何从Firebase的云函数与Googl

  • 我一直在研究App Engine和Cloud SQL。 最近我禁用了数据库的公共访问。此后,我无法使用我的应用引擎连接到CloudSQL(应用引擎和CloudSQL都在同一个Google云项目中)。 我能够连接的唯一方式是在CloudSQL上将应用引擎IP列入白名单。但在新的部署中,IP会发生变化,因此添加静态IP并不是理想的解决方案。 在云SQL连接选项卡中,它显示以下内容: 应用引擎授权< b

  • 当尝试将我的谷歌应用引擎连接到我的谷歌云SQL实例(第二代)时,我找不到“…授权应用引擎应用程序部分…”(https://cloud.google.com/appengine/docs/php/cloud-sql/#PHP_Build_a_starter_application_and_database)。 我只是瞎了,还是这不再存在了?如果它不存在,如何将谷歌应用引擎连接到谷歌云SQL(第二代)

  • 我想使用Spring Boot创建Web服务,将其添加到docker映像,连接到云sql,然后在Compute Engine上运行。 我正在使用docker compose来组合项目映像和云sql代理映像。但是,无论我给出什么jdbc URL,它都无法连接。现在,我正在本地尝试所有这些 我尝试了以下URL: docker-compose.yml 应用程序.属性:

  • 我一直试图连接到运行在中的示例PHP Hello world应用程序到