본문 바로가기
🚧에러모음

[ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').

by 서버요정 호토론 2021. 7. 29.

[문제상황]

도커 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

 

lower_case_table_names Settings in MySQL 8.0.12

I've just compiled the version MySQL 8.0.12 in a Ubuntu 16.0.4. After following the instructions in the website and making the following my.cnf file: [mysqld] datadir=/usr/local/mysql/data socket...

stackoverflow.com

 

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

 

MySQL 8.0.12의 lower_case_table_names 설정

Ubuntu 16.0.4에서 MySQL 8.0.12 버전을 컴파일했습니다. 웹 사이트의 지침에 따라 다음 my.cnf 파일을 만든 후 : [mysqld] datadir=/usr/local/mysql/data socket=/tmp/mysql.sock port=3306 log-error=/usr/loca..

sql-factory.tistory.com

https://ldne.tistory.com/176

 

[Docker] MySQL5.7 컨테이너 설치하기

1. MySQL5.7 컨테이너 설치하기 # docker run -d --name mysql5.7 -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true -e TZ=Asia/Seoul mysql:5.7 --character-set-server=utf8 --collation-server=utf8_general_c..

ldne.tistory.com

https://m.blog.naver.com/dogspecial/221436368729

 

MySQLSyntaxErrorException: Table doesn't exist

개하!(게스트 하우스 아니고 개특별 하이라는 뜻^^) 오늘은 서비스 테스트를 위해 Mysql 스키마 생성 후 ...

blog.naver.com

 

댓글