Я не нахожу никакой информации о причине, по которой я получаю ошибку ниже, или о способе передачи диалекта в общем виде c. Я использую весеннюю загрузку версии 2.2.4
У меня есть следующий тест для моего приложения с библиотекой тестовых контейнеров против MySQL. Я использую инициализатор контекста приложения специально для теста, и я должен установить диалект JPA, в противном случае я получаю сообщение об ошибке в журнале, тест все еще проходит, но я пытаюсь понять, где происходит ошибка и почему. Я ищу способ передать диалект в общем c способ
@RunWith(SpringRunner.class)
@SpringBootTest(classes = PetClinicApplication.class,
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ContextConfiguration(initializers = {BootTestContainersSpockApplicationTests.Initializer.class})
public class BootTestContainersSpockApplicationTests {
@Autowired
private SpecialtyService specialtyService;
@ClassRule
public static MySQLContainer mySQLContainer = (MySQLContainer) new MySQLContainer("mysql:5.5")
.withInitScript("db/schema.sql")
.withDatabaseName("sampleapp")
.withUsername("user")
.withPassword("password");
@Test
public void testAgainstMySQL() {
loadSpecialties();
assertEquals(3L, specialtyService.findAll().size());
}
private void loadSpecialties() {
Arrays.asList(new Specialty("radiology"),
new Specialty("surgery"),
new Specialty("dentistry")).forEach(specialty -> specialtyService.addSpecialty(specialty));
}
static class Initializer
implements ApplicationContextInitializer<ConfigurableApplicationContext> {
public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
TestPropertyValues.of(
"spring.datasource.url=" + mySQLContainer.getJdbcUrl(),
"spring.datasource.username=" + mySQLContainer.getUsername(),
"spring.datasource.driver-class-name=" + mySQLContainer.getDriverClassName(),
"spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect",
"spring.datasource.password=" + mySQLContainer.getPassword()
).applyTo(configurableApplicationContext.getEnvironment());
}
}
}
, тест работает нормально, но когда я отмечаю эту строку
"spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect"
в комментарии я получить следующую ошибку:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown table 'SEQUENCES' in information_schema
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_144]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_144]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_144]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_144]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.48.jar:5.1.48]
at com.mysql.jdbc.Util.getInstance(Util.java:408) ~[mysql-connector-java-5.1.48.jar:5.1.48]
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944) ~[mysql-connector-java-5.1.48.jar:5.1.48]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3933) ~[mysql-connector-java-5.1.48.jar:5.1.48]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3869) ~[mysql-connector-java-5.1.48.jar:5.1.48]
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524) ~[mysql-connector-java-5.1.48.jar:5.1.48]
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2675) ~[mysql-connector-java-5.1.48.jar:5.1.48]
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465) ~[mysql-connector-java-5.1.48.jar:5.1.48]
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2439) ~[mysql-connector-java-5.1.48.jar:5.1.48]
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1365) ~[mysql-connector-java-5.1.48.jar:5.1.48]
at com.zaxxer.hikari.pool.ProxyStatement.executeQuery(ProxyStatement.java:111) ~[HikariCP-3.4.2.jar:na]
at com.zaxxer.hikari.pool.HikariProxyStatement.executeQuery(HikariProxyStatement.java) ~[HikariCP-3.4.2.jar:na]
at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorLegacyImpl.extractMetadata(SequenceInformationExtractorLegacyImpl.java:42) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final]
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentImpl.sequenceInformationList(JdbcEnvironmentImpl.java:403) [hibernate-core-5.4.10.Final.jar:5.4.10.Final]
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentImpl.<init>(JdbcEnvironmentImpl.java:268)