2016-10-13 5 views
1

ここでは同じ問題で他の投稿を見たことがありますが、私の場合は答えが得られません。 Go Appengineアプリとの接続を確立しようとしているGoogle SQLCloud 2世代データベースがあります。 私は、私は第一世代がちょうどパラメータとしてプロジェクト名およびインスタンス名を渡すことで使用したのと同じ方法で接続しようとした最初go-sql-driver/mysqlGoogle SQL Cloudに接続してくださいAppEngineを使用して2番目の世代

を使用しています:

sql.Open("mysql", "[email protected](project:instance)/database" 

は、それから私は、クラウドから気づきましたコンソールとも私の接続パラメータは、現在のように見えるように、地域も必要であることをthis postから:

sql.Open("mysql", "[email protected](project:uscentral1:instance)/database" 

ともパスワード

とまた

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") 

運:ドライバのドキュメントから提供されたコードを使用してthis postに説明するように

sql.Open("mysql", "root:[email protected](project:uscentral1:instance)/database" 

まだ働いていない

私の最後の試みは、SSLを使用して接続することでした。

この時点では、問題の可能性のあるアイディアが不足しています。誰かがそれを稼働させるためにほとんどの人が何をしたのと変わったことはありますか?この時点で、問題が自分のコードにあるのか、ドライバかCloudSQLデータベースの何らかの設定であるかどうかは分かりません。

答えて

0

私のプロジェクトには、AppEngineのデフォルトの資格情報がないことが分かります。コンソールのドキュメントによれば、プロジェクトの作成時にデフォルトでAppEngineとCompute Engineのデフォルトのクレデンシャルが作成されますが、特にこのプロジェクトは以前のApp Engineコンソールから作成されていましたが、私の前提は、AppEngine最近のプロジェクトを作成するときと同じようにデフォルトの資格情報を作成していない新しいアーキテクチャーにプロジェクトを投影します。 古いプロジェクトを削除して新しいプロジェクトを作成しましたが、すべて正常に動作します。私は、古いプロジェクトの正しい資格情報を作成してもうまくいくと思います。 私はドキュメントに頼っていたので、この回答を残しています。実際には明らかにする前に、実際にこれに多くの時間を費やしました。 Google Cloud Docの皆さんには、これをどこかに記録することをお勧めします。

0

次の作業例を取り、アプリケーションの内容と比較してください。 INSTANCE_CONNECTION_NAMEをクラウドコンソールに表示される「インスタンス接続名」または「gcloud sql describe」に置き換えます。 アプリで何か違うことが分からない場合は、この例を試してみて、どのようなエラーが発生しているのかを確認してください。

+0

ありがとう@Vadim。上記の私の答えを見てください。 –

関連する問題