2017-02-19 27 views
1

Я пытаюсь подключиться к базе данных Cloud SQL, используя GORM в golang.GORM Cloud SQL Connection в App Engine с использованием Go

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, th e ошибка порта процесса. Однако всякий раз, когда я получить доступ к маршруту (т.е./событий), что делает запрос к базе данных, соединение потеряется, страница 404 брошена, и сообщение об ошибке регистрируется sql: database is closed

Когда я запустить приложение локально путем создания пакета go build && ./appname и используя локальный сервер MySQL, он отлично работает.

Может кто-нибудь рассказать мне, как подключиться к базе данных Cloud SQL с помощью Go's GORM framework и App Engine?

ответ

0

Это связано с вызовом log.New в этом файле: https://github.com/jinzhu/gorm/blob/master/logger.go#L15

Это anwser объясняет, почему dev_appserver.py получает его: https://stackoverflow.com/a/24112953/4266494

Чтобы отключить эту функцию, вы можете либо отключить все протоколирование GORM:

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 

Я устанавливаю новый регистратор с реальным контекстом Это единственное обходное решение, которое я нашел, чтобы избежать сбоев при сохранении некоторых журналов, это может быть потрясающе, если у одного из вас был реальный.