이 글에서 사용되는 프로젝트는 Spring Boot(Java) 2, MySQL 8이 사용되었습니다.
1. 상황
데이터베이스를 연결하고 커넥션을 얻어 사용하려고 할 때
java.sql.SQLException: Unknown system variable 'tx_isolation'
Query is: SELECT @@tx_isolation
위와 같은 에러가 발생할 수 있습니다.
2. 일반적인 해결 방법
MySQL과 WAS-MySQL 커넥터의 버전 차이가 주된 원인입니다.
MySQL 버전이 올라가며 시스템 변수 "tx_isolation"가 "transaction_isolation"로 이름이 바뀌었기 때문에
커넥터에서 잘못된 시스템 변수 이름을 DB에 전달하면 위 예외가 나타나는 것으로 추측됩니다.
3. 나의 상황
나의 경우 헷갈렸던 점은, 스프링을 실행해서 DB와 연결이 되었을 때는 나타나지 않았으나
테스트에서 DataSource를 설정하여 연결할 때만 위 에러가 나타났다는 점입니다.
MySQL에서 테스트해봐도
위처럼 transaction_isolation을 시스템 변수로 사용하고 있었고
의존 모듈 버전도
8 이상이라 문제가 없어보였습니다.
4. 나의 해결 방법
예외로그를 주의 깊게 보지 않았던 것이 떠올라 다시 로그를 확인하러 가니 거기에 정답이 있었습니다!
테스트에서는 MySQL이 아니라 MariaDB 모듈을 사용하고 있었습니다.
MariaDB 모듈을 지워주고 다시 실행하니 정상적으로 테스트가 작동하였습니다.
예외로그도 잘 읽어줍시다ㅜㅜ