java - Spring Boot + Flyway + AWS:原因:java.sql.SQLException:找不到合适的驱动程序
问题描述
除了在 AWS Elastic Beanstalk 中,我得到了这个,但该应用程序在本地工作。
01-Aug-2018 07:44:54.815 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Unable to obtain Jdbc connection from DataSource
Caused by: org.flywaydb.core.api.FlywayException: Unable to obtain Jdbc connection from DataSource
Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://d-use1-xx.xxxxxxxxxxx.us-east-1.rds.amazonaws.com:3306/xxxxxxxxxxx
正确指定了 JDBC URL。我有这个file.war/WEB-INF/classes/application.properties
spring.datasource.url = jdbc:mysql://d-use1-xx.xxxxxxxxxx.us-east-1.rds.amazonaws.com:3306/xxxxxxxxx
spring.datasource.username = xxxx
spring.datasource.password = xxxxxxxxx
我确实\WEB-INF\lib\mysql-connector-java-5.1.46.jar
在 WAR 文件中有。
我不知道这是否重要,但我最近为 Spring Security OAuth2 添加了一个 JDBC TokenStore 并将其添加到主类中。
@SpringBootApplication
@MapperScan("com.xxxxxx.xxxxxx.mapper")
public class XxxxxxxxxxxxApplication extends SpringBootServletInitializer {
@Bean(name = "OAuth")
@ConfigurationProperties(prefix="spring.datasource")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
我不知道这是否重要(以前从未这样做过),但是设置了一个空的环境变量
2018 年 8 月 1 日 07:44:38.290 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-DJDBC_CONNECTION_STRING=
解决方案
我可以通过设置环境变量来修复它
SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.jdbc.Driver
AWS变成了哪个
2018 年 8 月 1 日 17:01:03.505 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-DSPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.jdbc.Driver
我不知道为什么它突然需要那个属性。我正在使用flyway-core-3.2.1.jar
. 我没有在https://flywaydb.org/documentation/plugins/springboot中指定版本,所以它就是这样。
推荐阅读
- oracle - Proc SQL 查询的无效数据类型错误
- angular - 在角度中使用指令 ngIf 或指令 ngFor 时显示空白页
- bash - 无法验证 shell 脚本中的字符串
- java - 是否有像“changeSelection()”这样的函数来选择行但在表格顶部而不是底部?
- java - Java Keystore - 当 varbinary 存储为 0x 时无法加载密钥库
- regex - 在不使用 Apache NIFi 中的 avroSchema 或 ConvertRecord 处理器的情况下,将 csv 文件转换为 json 的方法是什么?
- java - 我如何将这段 Java 代码转换为 kotlin?
- matlab - MATLAB - MATLAB 32bit 和 64bit 之间的交互
- android - Android Studio Gradle“排除”未按预期工作
- c - 如何在 VS Code 中控制源文件