Я видел другие сообщения с той же проблемой здесь, однако ни один из ответов не мог помочь в моем случае. У меня есть база данных Google SQLCloud 2-го поколения, к которой я пытаюсь подключить свое приложение Go Appengine. Я использую go-sql-driver/mysql
Сначала я попытался подключиться так же, как и с 1-м поколением, просто передав имена проекта и экземпляра в качестве параметров:
sql.Open("mysql", "root@cloudsql(project:instance)/database"
Затем я заметил из облачной консоли, а также из этот пост что регион также требуется, поэтому мои параметры подключения теперь выглядят так:
sql.Open("mysql", "root@cloudsql(project:uscentral1:instance)/database"
а также с паролем
sql.Open("mysql", "root:password@cloudsql(project:uscentral1:instance)/database"
До сих пор не работает
Моя последняя попытка заключалась в подключении с использованием SSL, как описано в этот пост с использованием кода из документации по драйверам:
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.