2016-05-16 4 views
3

Google in Verbindung bringen kann, sagt man bei Google Cloud SQL mit Golang und die go-sql-driver wie so verbinden kann:nicht zu Google Cloud SQL mit SSL + Golang von Google App Engine

import "database/sql" 
import _ "github.com/go-sql-driver/mysql" 

db, err := sql.Open("mysql", "[email protected](project-id:instance-name)/dbname") 

ref: https://cloud.google.com/appengine/docs/go/cloud-sql/reference

.. Aber das (für mich) erzeugt einen x509-Zertifikatfehler:

Ich kann nicht herausfinden, wie man das löst. Das erneute Hinzufügen des Instanznamens (auch wenn es bereits vorhanden ist) in der Verbindungszeichenfolge ist weder hilfreich noch entspricht es den Google-eigenen Dokumenten.

Hat es jemand geschafft, das funktioniert? Was ist falsch?

+0

Ich hoffe, Sie weitere Informationen über das Setup gemeinsam nutzen können. Laufen Sie auf App Engine? Laufen Sie erste/zweite Generation? –

+0

Danke für die Antwort ... in der folgenden Frage gelöst. :) –

+0

Übrigens, das war für die erste Generation, aber ich renne in diesen Fehler versucht es mit der zweiten Generation zu arbeiten: 'TLS angefordert, aber der Server unterstützt nicht TLS' –

Antwort

4

Verbinden Sie sich mit SSL? Diese Fehlermeldung zeigt an, dass die Eigenschaft ServerName bei der Registrierung Ihrer benutzerdefinierten TLSConfig mit dem mysql-Treiber zusätzlich zu unter Angabe der project-id:instance-name innerhalb sql.Open() festgelegt werden muss.

z.B. Verwenden Sie die TLS-Setup from the docs, sondern eine ServerName in Ihren Anruf RegisterTLSConfig hinzufügen:

mysql.RegisterTLSConfig("custom", &tls.Config{ 
      RootCAs:  rootCertPool, 
      Certificates: clientCert, 
      ServerName: "projectName:instanceName", 
     }) 

Dann ?tls=nameOfYourCustomTLSConfig anhängen

db, err := sql.Open("mysql", "[email protected](project-id:instance-name)/dbname?tls=custom") 
+0

Ah, hab es. Ich konnte diese Information nirgendwo finden. Datenbankverbindung endlich erfolgreich! Ich werde diese Informationen an den Google-Support weiterleiten. –

+0

@BenGuild Großartig zu hören! Also hatten Sie benutzerdefinierten SSL-Code in und um Ihren 'sql.Open()' Aufruf? – culix

+0

Ja, daher die Aufforderung zum Zertifikat. ;) –