未找到适合jdbc的驱动程序:红移:
我正试图使用未找到适合jdbc的驱动程序:红移:,jdbc,aws-lambda,amazon-redshift,Jdbc,Aws Lambda,Amazon Redshift,我正试图使用com.amazon.redshift.jdbc.Driver连接到我的红移数据库,我编写了一个简单的类,该类连接到数据库并执行select查询。我已经创建了一个简单的gradle项目,它创建了胖罐子 当我在本地机器上运行时,一切正常。但当我将其部署到AWS Lambda中时,它给出了以下错误 { "errorMessage": "No suitable driver found for jdbc:redshift://xyz/xyz", "errorType": "java.sql
com.amazon.redshift.jdbc.Driver
连接到我的红移数据库,我编写了一个简单的类,该类连接到数据库并执行select查询。我已经创建了一个简单的gradle项目,它创建了胖罐子
当我在本地机器上运行时,一切正常。但当我将其部署到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)"
]
}
我不知道为什么同一个罐子在本地工作,而不是在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()
有人能帮忙解决这个问题吗?如果您使用Maven,请确保使用
redshift-jdbc42-no-awssdk
。而且,很明显在1.2.10.1009版本中有一个bug,看
唯一有效的版本似乎是“1.2.8.1005”,这是Maven存储库中最古老的可用版本
您需要做的另一件事是确保您的jar文件需要是一个所谓的“胖jar”,它将包含应用程序的所有依赖项
您可以使用maven assembly plugin
作为打包生命周期来制作胖罐:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>Handler</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven汇编插件
2.4.1
带有依赖项的jar
处理者
组装
包裹
单一的
我在一个ECS任务中遇到了这个错误,驱动程序已经捆绑在jar中,它是一个spring boot应用程序。容器在dev机器上正常工作,但在ECS中失败@Ali Niaki上面的回答很有帮助,我尝试更改版本号,但没有降级,而是升级到了新版本
AWS似乎没有使用发布版本更新文档。因此,使用他们的存储库:从他们的文档中,找到最新版本并使用它。在撰写本文时,在ECS中工作的最新版本是“redshift-jdbc42-1.2.18.1036”。AWS redshift文档仍然提到:“1.2.10.1009”,这导致了一些问题。到目前为止,提供的链接已经失效。有趣的是,他们的文档()仍然指向同一个存储库链接。