将mysql连接器版本从5.1.42升级到8.0



此升级是否适用于com.mysql.jdbc.Driver?因为驱动程序发生了更改,即com.mysql.cj.jdbc.driver throws无法启动容器错误。

ERROR [main] 0].tryStart(264) | Could not start container
org.rnorth.ducttape.TimeoutException: org.rnorth.ducttape.TimeoutException: java.util.concurrent.TimeoutException
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:53)
at org.testcontainers.containers.JdbcDatabaseContainer.waitUntilContainerStarted(JdbcDatabaseContainer.java:129)
at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:259)
at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:212)
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:76)
at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:210)
at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:199)
at com.nexage.nexus.common.BaseNexus_IT.<clinit>(BaseNexus_IT.java:280)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

在pom.xml 中添加了以下依赖项

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
<scope>test</scope>
</dependency>

在ds.properties文件中

datasource.name=coreDS
datasource.driver=com.mysql.cj.jdbc.Driver
datasource.url=jdbc:mysql://localhost:18082/core?useSSL=false&requireSSL=false&verifyServerCertificate=false&profileSQL=true&maxQuerySizeToLog=16384&serverTimezone=America/New_York
datasource.username=root
datasource.password=mysql

启动容器的代码:

公共静态GenericContainer mysqlCore;

mysqlCore = new MySQLImageContainer(testProperties.get("mysql.docker.image").toString())
.withUsername(testProperties.get("db.username").toString())
.withPassword(testProperties.get("db.password").toString())
.withDatabaseName("core");
mysqlCore.setPortBindings(Arrays.asList(testProperties.get("mysql.core.db.port").toString() + ":3306/tcp"));
System.out.println(" starting mysql container");
mysqlCore.start();

通过将测试容器升级到1.14.3以及新的mysql驱动程序和mysql连接器8.0版本,错误得到了解决。

最新更新