【发布时间】:2019-01-10 21:55:05
【问题描述】:
我正在尝试使用com.amazon.redshift.jdbc.Driver 连接到我的redshift 数据库,我编写了一个简单的类来连接到数据库并执行选择查询。我创建了一个简单的 gradle 项目,它创建了 fat jar。
当我在本地机器上运行它时,一切正常。但是当我将它部署到 AWS Lambda 中时,它给了我以下错误
{
"errorMessage": "No suitable driver found for jdbc:redshift://xyz/xyz",
"errorType": "java.sql.SQLException",
"stackTrace": [
"java.sql.DriverManager.getConnection(DriverManager.java:689)",
"java.sql.DriverManager.getConnection(DriverManager.java:208)",
"test.DatabaseConnector.grab(DatabaseConnector.kt:204)",
"test.DatabaseConnector.generateHTMLReport(DatabaseConnector.kt:271)",
"test.DatabaseConnector.sendReport(DatabaseConnector.kt:606)",
"test.HelloWorldLambda.runReport(HelloWorldLambda.kt:15)",
"sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)"
]
}
我不确定为什么同一个 jar 在本地而不是 AWS lambda 中有效。下面是代码
Class.forName(driverName)
val connection = DriverManager.getConnection(url,
Properties().apply {
setProperty("user", username)
setProperty("password", password)
})
val stmt = connection.createStatement()
val rs = stmt.executeQuery(query)
while (rs.next()) {
println(rs.getString("name"))
}
rs.close()
stmt.close()
connection.close()
有人可以帮忙解决这个问题吗?
【问题讨论】:
标签: jdbc aws-lambda amazon-redshift