Ich habe andere Beiträge mit dem gleichen Problem hier aber keine der Antworten konnte in meinem Fall helfen. Ich habe eine Google SQLCloud-Datenbank der 2. Generation, mit der ich versuchen möchte, dass meine Go Appengine App eine Verbindung herstellt. Ich verwende go-sql-driver/mysqlVerbinden mit Google SQL Cloud 2. Generation mit Go on AppEngine
Zuerst versuchte ich die gleiche Art und Weise zu verbinden ich mit der ersten Generation verwenden nur die Projekt- und Instanznamen als Parameter übergeben:
sql.Open("mysql", "[email protected](project:instance)/database"
Dann habe ich aus der Cloud bemerkt habe, Konsole und auch von this post, dass die Region ist auch erforderlich, so dass meine Verbindungsparameter nun wie folgt aussehen:
sql.Open("mysql", "[email protected](project:uscentral1:instance)/database"
und auch mit Passwort
sql.Open("mysql", "root:[email protected](project:uscentral1:instance)/database"
Immer noch nicht
Mein letzter Versuch war arbeiten mit SSL zu verbinden, wie auf this post beschrieben mit dem Code aus der Treiber Dokumentation:
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:[email protected](project:uscentral1:instance)/database?tls=custom")
auch kein Glück.
An diesem Punkt sind mir nur die Ideen aus, was das Problem sein könnte. Hat jemand etwas anderes gemacht als die meisten Leute, um es zum Laufen zu bringen? An diesem Punkt bin ich mir nicht sicher, ob das Problem mit meinem Code, dem Treiber oder einer Konfiguration in der CloudSQL-Datenbank zusammenhängt.
Dank @Vadim. Bitte sehen Sie meine Antwort oben. –