【发布时间】:2018-12-04 20:06:00
【问题描述】:
我正在尝试使用 Go 在 AWS Lambda 中进行基本的数据库连接,但由于某种原因,它卡在了 db.prepare() 并且 cloudwatch 中没有显示日志。
func Handler(request Request) (Response, error) {
db, err := sql.Open("mysql", dbUsername+":"+dbPassword+"@tcp("+dbURL+":"+dbPort+")/"+dbName)
if err != nil {
log.Fatal(err)
}
defer db.Close()
stmt, err := db.Prepare("SELECT id, password FROM package_passwords WHERE password = ?")
return Response{
Message: "rows",
Ok: false,
}, nil
}
奇怪的是,上面的代码在 AWS Lambda 中停留了至少 5 秒以上,而在普通的 go run/go build 中运行良好。
【问题讨论】:
-
这不是回答您的问题,而是:您是否将密码以纯文本格式保存在数据库中?
-
是的,它存储为计划文本。并且相同的 go 语法在普通 go 构建中有效,但在 AWS Lambda 中无效
-
这又与您最初的问题无关。但我强烈建议您使用密码加密。
-
感谢您的建议!这实际上是不好的命名,因为这些 base32 文本的目的是为了兑换某些东西,而那些应该被命名为兑换代码或其他东西。
-
啊,好的。那么这些只是令牌。有道理。
标签: mysql go aws-lambda