Love the Stack、完全な欲求不満から私の最初の投稿。コメントありがとう! App EngineのではMySQLインスタンス内のデータベース App Engine(第2世代CloudSQL)からCloudSQLに接続するGO
- 、私はアクティブ - > Googleクラウドシェル<を - - 。 (私は私のconsole.cloud.google.comのコマンドプロンプトで作業しています)
私はこの基本的なGOプログラムをコピーしてMySQLインスタンスに接続しました。
ビルドして実行します。 ビルドmysqlexample.go ./mysqlexample
正常に接続することができませんでした。私が試したさまざまな接続文字列をすべて見ることができ、その右側には私が得る応答があります。
ローカルのWindowsマシンからmysql adminを使用して接続できます。
ヘルプ?
package main
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"log"
)
func main() {
const dbIP = "104.xxx.xx.x"
const dbInstanceName = "esp-1-dev:us-central1:espdev"
const dbName = "servpro"
const dbUserName = "root"
const dbPassword = "xxxxxxx"
const dbOpenString = dbUserName + ":" + dbPassword + "@/" + dbInstanceName + "/" + dbName //GETS RESPONSE default addr for network 'AppEngine:Zone:Project' unknown
//const dbOpenString = dbUserName + "@cloudsql(" + dbInstanceName + ")/" + dbName //GETS RESPONSE dial cloudsql: unknown network cloudsql
//const dbOpenString = dbUserName + "@/" //+ "?parseTime=true&loc=UTC" //GETS RESPONSE getsockopt: connection refused
//const dbOpenString = dbUserName + ":" + dbPassword + "@tcp(" + dbIP + ":3306)/" + dbName //GETS RESPONSE dial tcp 104.xxx.xxx.x:3306: getsockopt: connection timed out
// Got this from stack overflow. GoDocs are not updated to reflect 2nd Gen databases.
// http://stackoverflow.com/questions/38890022/tls-requested-but-server-does-not-support-tls-error-with-google-cloud-sql-2nd
//user:[email protected](copiedPastedInstanceConnectionName)/databaseName?charset=charset&collation=collation&tls=tlsConfigName&parseTime=true
//First Generation Connection String
//username:[email protected](appID:CloudSQLInstance)/databasename?parseTime=true&loc=UTC
db, err := sql.Open("mysql", dbOpenString);
defer db.Close()
log.Println("Attempting Ping of database....")
err = db.Ping()
if err != nil {
log.Println("db.Ping() failed: " + dbOpenString)
log.Println(err)
} else {
log.Println("Success!")
}
}
あなたは、App Engine StandardまたはApp Engine Flexから接続しているかどうかは言いませんでした。あなたはApp Engine Flexから接続していますが、App Engine Standardのドキュメント/投稿を読んでいると思います。ご確認ください。 – Vadim
Google Cloud Shellで作業しています。プログラムを作り、ビルドして実行してください。ソリューションを展開してyamlに追加するまで、Flexを使用するオプションはまだありません。私は、すべてのGOの例を使ってこのクラウドシェル環境を行ってきました。今、私はクラウドSQLと話をして行きたいです。私は今、私はGoogleのクラウドシェルと戦っていると思う。私は自分のアプリを配備し、今晩はフレックスをオンにして結果を投稿します。以下の接続文字列はクラウドシェルでは動作しませんが、少なくともフレックス接続文字列は私に新しいメッセージを与えます。そのようなファイルディレクトリはありません –
あなたの投稿にもっと明確にする必要があります。その場合、App Engineからの接続のためのApp Engineの指示に従う必要はありません** **。クラウドシェルからの接続はもう少し複雑なので、クラウドSQLプロキシをシェルにダウンロードして実行する必要があります(App Engine Flexから投稿したのと同じ接続文字列を使用) – Vadim