Я получаю это, кроме 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
URL-адрес JDBC указан правильно. У меня это в 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.
Я не знаю, имеет ли это значение, но недавно я добавил JDBC TokenStore для Spring Security OAuth2 и добавил его в основной класс.
@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();
}
Я не знаю, имеет ли это значение (никогда раньше не было), но была установлена пустая переменная среды
01-Aug-2018 07:44:38.290 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -DJDBC_CONNECTION_STRING=
Я использую Spring Boot. Конфигурации пролетного пути нет. См. flywaydb.org/documentation/plugins/springboot. Мой локальный MySQL - mysql Ver 15.1 Distrib 10.1.30-MariaDB. AWS DB - это MySQL 5.6.39.
Единственная настройка Flyway в моем application.properties - это flyway.baselineOnMigrate = true.




Я смог исправить это, установив переменную среды
SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.jdbc.Driver
В какой AWS превращается
01-Aug-2018 17:01:03.505 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -DSPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.jdbc.Driver
Не знаю, зачем ему вдруг понадобилась эта собственность. Я использую flyway-core-3.2.1.jar. Я не указывал версию в https://flywaydb.org/documentation/plugins/springboot, так что она подхватила.
Вам необходимо добавить свойство конфигурации spring.datasource.driver-class-name:
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
Автоматическая загрузка драйвера JDBC работает только для драйверов в исходном (системном) пути к классу приложения, но драйверы, расположенные в WEB-INF/lib, добавляются в путь класса контекста позже и не могут быть загружены автоматически.
Это означает, что вам нужно явно загрузить их, что и делает Spring Boot, если вы укажете spring.datasource.driver-class-name (или переменную среды SPRING_DATASOURCE_DRIVER_CLASS_NAME, как вы выяснили).
добавьте конфигурацию вашего пролетного пути && версию mysql, о которой идет речь