我尝试在golang中使用GORM连接到Cloud SQL数据库。
db, _ = gorm.Open("mysql", "user:pass@cloudsql(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,运行时进程端口错误就会消失。但是,每当我访问执行数据库查询的路由(即/ events)时,连接都会被删除,抛出404页面并记录错误消息sql: database is closed
当我通过构建包go build && ./appname
并使用本地MySQL服务器在本地运行应用程序时,它可以正常工作。
有人可以告诉我如何使用Go的GORM框架和App Engine连接到Cloud SQL数据库吗?
答案 0 :(得分:0)
这是因为此文件中调用了log.New:https://github.com/jinzhu/gorm/blob/master/logger.go#L15
这可以解释为什么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
我设置了一个具有真实背景的新记录器 这是我发现在保留一些日志时避免崩溃的唯一解决方法,如果你们其中一个人有真正的日志,它可能会很棒。