PYTHON/etc contents

mysql 8.0 내에서 tx_isolation만 있는 경우

  • -

[ERROR CODE]

  • sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1193, "Unknown system variable 'transaction_isolation'")

 

노트북을 새롭게 구매한 후에 세팅하던 중 계속 오류가 발생해서 검색해보니, MySQL 8.0 내 변수로 tx_isolation만 존재하는 오류가 발생했다. 원칙 상, MySQL 5.7.20 버전 이후의 버전부터는 tx_isolation을 사용하지 않고 transaction_isolation을 사용하기 때문에, MySQL 8.0을 사용한다면 tx_isolation은 없고 transaction_isolation만 존재해야 한다.

MySQL 설치 시에 함꼐 설치되는 MySQL Command Line Client를 통해 비밀번호를 입력한 후 아래의 명령어를 사용하면 설정되어 있는 트랜잭션을 확인할 수 있다.

show variables like 't%_isolation';

 

그 결과 MySQL 5.7.20 이상의 버전에서 아래 왼쪽의 사진처럼 출력된다면 오류가 발생할 것이고, 오른쪽 사진처럼 출력된다면 오류가 발생하지 않을 것이다.

 

그럼, 해결 방법을 한 번 찾아보도록 하자.

 

 

해결 방법(How to fix)

일단 본인의 경우에는 MySQL을 최신 버전으로 사용하는 것을 원하지 않기 때문에(오류의 발생 가능성이 높은 특성), 가능한 한 최대한 낮은 버전의 프로그램을 사용하는 것을 추구하는 입장이다. 그래서 생각보다 너무 낮은 버전의 프로그램이 설치되어 있는 것은 아니었을까 싶은 생각에 MySQL Installer를 다시 한 번 뒤적였다.

WorkBench는 8.0.11 버전이나, Server와 Shell은 8.0.0 버전임을 확인했고 두 개의 프로그램 모두 8.0.11 버전으로 올리기로 결정했다.

 

그렇다. 아래와 같이 Authentication Method라는 창이 떠야 정상이다. 왠지 이번에 설치할 땐 이 창을 못 봐서, 설치 과정에서 "아 뭔가 좀 이상한데?"싶었지만 원인을 찾을 수는 없었다.

이 화면에서는 레거시(Legacy)로 체크하고 넘어가야 한다. 저 권장(RECOMMENDED)이라는 말에 속아 넘어가지 말자. 저거로 체크하고 넘어가면 또 재설치를 해야 한다. 

 

 

 

해치웠나?

일단 프로그램 동작 시 동일한 오류는 발생하지 않음을 확인했다. 다만 variables를 확인해보니 Empty set.이라는 문구만 출력되는 문제가 발생했다. 지금 당장은 문제가 없지만, 쓰다보면 언젠간 분명히 문제가 생길 것이다.

그럼 이참에 그냥 transaction-isolation=READ-COMMITTED를 입력해주도록 하자.

 

폴더를 열어   C:\ProgramData\MySQL\MySQL Server 8.0  으로 가서,   my.ini  파일을 열어 [mysqld] 하단 부분에 아래의 내용을 추가해주면 된다. 

transaction-isolation = READ-COMMITTED

추가된 화면

 

그 후에 다시 MySQL 8.0 Command Line Client를 열어서   show variables like 't&_isolation';을 사용하면, 아래와 같이 트랜잭션이 정상적으로 추가된 모습을 확인할 수 있다.

 

 

끝!


728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.