Backend/Spring
[Spring Error] wix-embedded-mysql 사용시 java.sql.sqlsyntaxerrorexception: table 'test-order_mgmt.products' doesn't exist 에러
mirae.kwak
2022. 9. 6. 15:28
728x90
Error
Test를 위한 embedded database를 사용하기 위해 wix-embedded-mysql을 사용하여 구현하였다.
maven 의존성 설정
<dependency>
<groupId>com.wix</groupId>
<artifactId>wix-embedded-mysql</artifactId>
<version>4.6.2</version>
<scope>test</scope>
</dependency>
Test 클래스
@SpringBootTest
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@ActiveProfiles("test")
class ProductJdbcRepositoryTest {
static EmbeddedMysql embeddedMysql;
@BeforeAll
static void setUp() {
var config = aMysqldConfig(v5_7_10)
.withCharset(Charset.UTF8)
.withPort(2215)
.withUser("test", "test1234!")
.withTimeZone("Asia/Seoul")
.build();
embeddedMysql = anEmbeddedMysql(config)
.addSchema("test-order_mgmt", ScriptResolver.classPathScript("schema.sql"))
.start();
}
...
}
schema.sql
CREATE TABLE products
(
product_id BINARY(16) PRIMARY KEY,
product_name VARCHAR(20) NOT NULL,
category VARCHAR(50) NOT NULL,
price bigint NOT NULL,
description VARCHAR(500) DEFAULT NULL,
created_at datetime(6) NOT NULL,
updated_at datetime(6) DEFAULT NULL
);
- schema.sql 에 products 테이블을 정의해놨지만 해당 테이블이 없다는 에러가 발생했다.
Solutions
mysql은 생성됐기 때문에 schema.sql 파일을 인식하지 못하는 것 같아 다음과 같이 코드를 변경하여 해결하였다.
@SpringBootTest
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@ActiveProfiles("test")
class ProductJdbcRepositoryTest {
static EmbeddedMysql embeddedMysql;
@BeforeAll
static void setUp() {
var config = aMysqldConfig(v5_7_10)
.withCharset(Charset.UTF8)
.withPort(2215)
.withUser("test", "test1234!")
.withTimeZone("Asia/Seoul")
.build();
embeddedMysql = anEmbeddedMysql(config)
.addSchema("test-order_mgmt", classPathScript("schema.sql"))
.start();
}
...
}
728x90