[문제상황]
도커 MySQL컨테이너를 생성하면 디폴트로 대소문자를 구분하게 되어있다
대소문자 구분을 하지 않게 하려고 MySQL컨테이너 내의 /etc/mysql/my.cnf 파일에
lower_case_table_names=1
이 코드를 추가하고 컨테이너 restart를 했더니 컨테이너가 종료됨;;
재시작 시키려고해도 이렇게 요지부동....
로그를 확인해보려고 docker logs 를 입력했더니
이러한 에러로그가 찍혀있다
[ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').
[문제원인]
내공부족으로 정확한 원인은 모르겠으나...ㅠㅠ
참고 글은 [mysqld] 이부분밑에 작성하라고 했는데 저부분이 없길래 그냥 넣었더니 에러가 난 것 같다ㅠㅠ
[mysqld]
lower_case_table_names=1
💡여기서 잠깐 토막상식!
※Value 값에 따른 설명.
0 : 테이블 생성 및 조회시 대소문자 구분 함 ←default
1 : 입력값이 대소문자 상관없이 소문자로 인식하여 소문자 인식 파일 생성함.
2 : 윈도우에서 대소문자 구분해서 테이블 가져옴
[해결방법]
1. --initialize 옵션주기
https://stackoverflow.com/questions/51803216/lower-case-table-names-settings-in-mysql-8-0-12
2. 도커 컨테이너 만들때 --lower_case_table_names=1 옵션 넣기
sudo docker run -d --name test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234
-e TZ=Asia/Seoul mysql:5.7 --character-set-server=utf8 --collation-server=utf8_general_ci --lower_case_table_names=1
-d : detached모드로 컨테이너 실행, 컨테이너를 백그라운드에서 동작하는 애플리케이션으로써 실행하도록 설정
-p 3306:3306 : 컨테이너의 포트를 호스트의 포트와 바인딩
호스트의 3306번 포트를 컨테이너의 3306번 포트와 연결하겠다
-e : 컨테이너에서 사용할 환경변수 설정
MYSQL_ROOT_PASSWORD=1234 : mysql root 비밀번호를 1234로 지정하겠다
--name test : 컨테이너의 이름을 test로 지정하겠다
--lower_case_table_names=1 : 입력값을 대소문자 구분없이 소문자로 인식
[확인하기]
show variables like 'lower_case_table_names';
잘 적용이 되었는지 아래 명령어로 확인해보자
이렇게 잘 나온다면 성공!
[참고문서]
https://sql-factory.tistory.com/461
https://m.blog.naver.com/dogspecial/221436368729
댓글