gpt4 book ai didi

google-app-engine - 在 AppEngine 上使用 Go 连接到第二代 Google SQL Cloud

转载 作者:IT王子 更新时间:2023-10-29 02:22:41 26 4
gpt4 key购买 nike

我在这里看到其他帖子也有同样的问题,但是没有一个答案对我的情况有帮助。我有一个 Google SQLCloud 第二代数据库,我正试图让我的 Go Appengine 应用程序建立连接。我正在使用 go-sql-driver/mysql

起初我尝试使用与第一代相同的方式进行连接,只是将项目和实例名称作为参数传递:

sql.Open("mysql", "root@cloudsql(project:instance)/database"

然后我从 Cloud Console 和 this post 注意到了该区域也是必需的,所以我的连接参数现在看起来像:

sql.Open("mysql", "root@cloudsql(project:uscentral1:instance)/database"

还有密码

sql.Open("mysql", "root:password@cloudsql(project:uscentral1:instance)/database"

还是不行

我最后一次尝试是使用 SSL 连接,如 this post 中所述使用驱动程序文档中提供的代码:

    rootCertPool := x509.NewCertPool()
pem, err := ioutil.ReadFile("/path/ca-cert.pem")
if err != nil {
log.Fatal(err)
}
if ok := rootCertPool.AppendCertsFromPEM(pem); !ok {
log.Fatal("Failed to append PEM.")
}
clientCert := make([]tls.Certificate, 0, 1)
certs, err := tls.LoadX509KeyPair("/path/client-cert.pem", "/path/client-key.pem")
if err != nil {
log.Fatal(err)
}
clientCert = append(clientCert, certs)
mysql.RegisterTLSConfig("custom", &tls.Config{
RootCAs: rootCertPool,
Certificates: clientCert,
})
sql.Open("mysql","root:password@cloudsql(project:uscentral1:instance)/database?tls=custom")

也没有运气。

在这一点上,我只是想不出问题可能是什么。为了让它正常工作,有没有人做了与大多数人不同的事情?此时我不确定问题出在我的代码、驱动程序还是 CloudSQL 数据库中的某些配置。

最佳答案

请将以下工作示例与您的应用程序中的示例进行比较。将 INSTANCE_CONNECTION_NAME 替换为 Cloud Console 或 gcloud sql describe 中显示的“实例连接名称”。如果您没有注意到您的应用有任何不同,请尝试运行此示例并查看您遇到的错误。

package hello

import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"net/http"
)

func init() {
http.HandleFunc("/", handler)
}

func handler(w http.ResponseWriter, r *http.Request) {
db, err := sql.Open("mysql", "root@cloudsql(INSTANCE_CONNECTION_NAME)/mysql")
if err != nil {
fmt.Fprintf(w, "Error constructing DB: %v", err)
return
}

rows, err := db.Query("SELECT 1")
if err != nil {
fmt.Fprintf(w, "Error performing query: %v", err)
return
}
fmt.Fprintf(w, "Success!")
rows.Close()
}

关于google-app-engine - 在 AppEngine 上使用 Go 连接到第二代 Google SQL Cloud,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40020782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com