Love the Stack, 완전 좌절에서 첫 번째 게시물을 사랑해. 댓글 주셔서 감사합니다!App Engine에서 CloudSQL에 연결 (Second Generation CloudSQL) GO
- 프로젝트
- 이 앱 엔진에서 MySQL 인스턴스
- 에서 데이터베이스 등재 2 세대 MySQL 인스턴스 내 앱 엔진에서 앱 엔진 프로젝트
- , 나는 활성화 생성됨 -> 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 표준 문서/게시물을 읽는 것으로 의심됩니다. 확인해주세요. – Vadim
Google Cloud Shell에서 작업하고 있습니다. 프로그램을 만들고, 빌드하고, 실행하십시오. 솔루션을 배포하고 yaml에 추가하기 전까지 Flex를 사용할 수있는 옵션이 아직 없습니다. 나는 모든 GO 예제를 실행하면서이 클라우드 쉘 환경을 수행해 왔습니다. 이제 SQL을 클라우드에 연결하고 문제가 발생했습니다. 나는 이제 내가 구글 클라우드 쉘을 상대로 싸우고 있다고 생각한다. 나는 앱을 배포하고 오늘 밤에 플렉스를 켜고 결과를 게시 할 것이다. 아래의 연결 문자열은 클라우드 셸에서 작동하지 않지만 최소한 플렉스 연결 문자열은 나에게 새로운 메시지를 제공합니다 ... 같은 파일 디렉토리가 없습니다. –
게시물에서 더 명확하게 작성해야합니다. 이 경우 App Engine에서 연결하기위한 것이므로 ** App Engine 지침을 따르지 않아도됩니다 **. Cloud Shell에서 연결하는 것은 좀 더 복잡합니다. 연결하려면 (App Engine Flex에서 게시 한 동일한 연결 문자열을 사용하여) 셸에 Cloud SQL Proxy를 다운로드하여 실행해야합니다. – Vadim