본문 바로가기
Spring

RuntimeException 1073741515: Embedded Mysql

by S2채닝S2 2023. 3. 2.

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 내장함수들은 자바에서 구현하는 것이 재사용성과 종속성 회피에 좋을 것 같다.

 

 

<참고>

https://velog.io/@p1atina/Windows-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%97%90%EB%9F%AC%EC%9D%BC-%EC%8B%9C-java.lang.RuntimeException-1073741515-and-output

 

[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

최근댓글

최근글

skin by © 2024 ttuttak