EmbeddedMysql Test Error
Version
wix에서 mysql 8.0 이상은 windows에서 지원하지 않는 문제가 있다.
EmbeddedMysql의 버전을 5.7로 변경해야한다.
나는 v8_0_11에서 v5_7_latest로 변경하였다.
import static com.wix.mysql.distribution.Version.v5_7_latest;
UUID_TO_BIN, BIN_TO_UID
1. 함수 변경
문제는, 8버전에는 있으나 5버전에는 없는 UUID_TO_BIN, BIN_TO_UUID이다.
두 Mysql 함수를 아래와 같이 변경해야 한다.
-- UUID_TO_BIN("random-uuid");
-- `-`문자를 삭제하고 binary로 변경
UNHEX(REPLACE("random-uuid-bla-bla", '-', ''));
-- SELECT BIN_TO_UUID(uuid) AS uuid FROM my_table;
-- BIN_TO_UUID를 HEX로 변경
SELECT HEX(uuid) AS uuid FROM my_table;
2. SQL 함수 생성
1번의 방법은 클래스를 찾아들어가 일일히 변경해주어야 한다는 번거로움이 있기 때문에
UUID_TO_BIN, BIN_TO_UUID 라는 함수를 새로 만들어주었다.
embeddedMysql 객체 생성 시 지정하는 스키마 스크립트에 아래의 SQL 코드를 넣어주면 된다.
var mysqlConfig = aMysqldConfig(v5_7_latest)
.withCharset(UTF8)
.withPort(2215)
.withUser("test","test1234!")
.withTimeZone("Asia/Seoul")
.build();
//schema.sql 파일에 아래의 코드를 넣어주면 됨.
embeddedMysql = anEmbeddedMysql(mysqlConfig)
.addSchema("test-oder-mgmt", classPathScript("schema.sql"))
.start();
--BIN_TO_UUID
DELIMITER //
CREATE FUNCTION BIN_TO_UUID(bin BINARY(16))
RETURNS VARCHAR(36) DETERMINISTIC
BEGIN
DECLARE hex VARCHAR(32);
SET hex = HEX(bin);
RETURN LOWER(CONCAT(LEFT(hex, 8), '-', MID(hex, 9, 4), '-', MID(hex, 13, 4), '-', MID(hex, 17, 4), '-', RIGHT(hex, 12)));
END; //
DELIMITER ;
--UUID_TO_BIN
DELIMITER //
CREATE FUNCTION UUID_TO_BIN(uuid VARCHAR(36))
RETURNS BINARY(16) DETERMINISTIC
BEGIN
RETURN UNHEX(CONCAT(REPLACE(uuid, '-', '')));
END; //
DELIMITER ;
특정 database에 종속되지 않도록 sql은 최대한 표준만 작성하고
DB 내장함수들은 자바에서 구현하는 것이 재사용성과 종속성 회피에 좋을 것 같다.
<참고>
[Windows] 테스트 에러일 시- java.lang.RuntimeException: '-1073741515' and output
Unable to start v5_7_latest on Windows 바로가기Wix가 MySQL 8.0 이상에서 window를 지원하지 않는 문제가 있습니다.따라서 mysql5.7로 테스트 해보면 될듯한데요.지금까지 작성한 문구를 아래와 같이 5.7에서 지
velog.io
https://remarkablemark.org/blog/2020/05/21/mysql-uuid-bin/
MySQL: convert between UUID and binary
How to convert between UUID string and binary in MySQL.
remarkablemark.org
'Spring' 카테고리의 다른 글
Spring Transaction Management (0) | 2023.03.09 |
---|---|
관점 지향 프로그래밍(AOP; Aspect Orient Programming) (0) | 2023.03.08 |
Spring JDBC: DBCP (0) | 2023.02.27 |
Spring Test: Junit (0) | 2023.02.17 |
mvn: jar파일 생성 및 실행 (0) | 2023.02.16 |