2017-02-19 2 views
1

golang의 GORM을 사용하여 Cloud SQL 데이터베이스에 연결하려고합니다.Go를 사용하는 App Engine의 GORM Cloud SQL 연결

db, _ = gorm.Open("mysql", "user:[email protected](connection:name:example)/") 
if err != nil { 
     log.Println(err) 
     //panic(err) 
    } 

나는

goapp serve appengine/ 

은 내가 데이터베이스 마이그레이션 관련이 발견 런타임 오류

ERROR 2017-02-19 20:48:05,436 http_runtime.py:396] bad runtime process port ['\r\n'] 

을 얻을 응용 프로그램을 제공 할 때

db.AutoMigrate(&models.Event{}) 

하는 경우 AutoMigrate를 제거합니다. e 런타임 프로세스 포트 오류가 사라집니다. 그러나 데이터베이스 쿼리를 수행하는 경로 (예 :/이벤트)에 액세스 할 때마다 연결이 끊어지고 404 페이지가 표시되고 오류 메시지가 기록됩니다. sql: database is closed

패키지를 빌드하여 로컬로 실행할 때 go build && ./appname 로컬 MySQL 서버를 사용하면 정상적으로 작동합니다.

누군가 Go의 GORM 프레임 워크와 App Engine을 사용하여 Cloud SQL 데이터베이스에 연결하는 방법을 알려주실 수 있습니까?

답변

0

이이 파일에 log.New에 대한 호출로 인해 : https://stackoverflow.com/a/24112953/4266494

이를 사용하지 않으려면, 당신은 모든 GORM 로깅을 사용하지 않도록 할 수 있습니다 : dev_appserver.py 그것을 얻는 이유 https://github.com/jinzhu/gorm/blob/master/logger.go#L15

이 anwser 설명 :

db.LogMode(false) 

또는 어댑터를 로거 출력 사용 https://github.com/benguild/GAEBridge/blob/master/log/debugLevel.go

db.SetLogger(NewDebugLogger(nil)) // on application scope 
db.SetLogger(NewDebugLogger(appengine.NewContext(req))) // on request scope 

실제 컨텍스트로 새 로거를 설정하고 있습니다. 일부 로그를 유지하는 동안 충돌을 피할 수있는 유일한 방법은 실제 해결 방법입니다.