MySQL에서 테이블 이름의 대소문자 구분은 lower_case_table_names 시스템 변수로 제어된다.
이 설정은 운영 체제에 따라 기본값이 다르며, 주의해야 할 점들이 있다.
1. lower_case_table_names 옵션
- 0: 테이블 이름을 대소문자 구분 (기본값: Unix/Linux)
- 1: 테이블 이름을 소문자로 저장하고 비교 시 대소문자 구분 안 함 (기본값: Windows, macOS)
- 2: 테이블 이름을 지정한 대로 저장하지만 비교 시 소문자로 변환 (macOS에서 권장)
2. 운영 체제별 기본 설정
Unix/Linux: 0 (대소문자 구분)
Windows: 1 (대소문자 구분 안 함)
macOS: 2 (저장은 지정한 대로, 비교는 소문자로)
3. 설정 방법
my.cnf 또는 my.ini 파일의 [mysqld] 섹션에 추가:
[mysqld]
lower_case_table_names=1
4. 주의점
MySQL 8.0부터는 데이터 디렉토리 초기화 후 이 값을 변경할 수 없다
일관성 유지: 모든 환경에서 동일한 설정을 사용하는 것이 좋습니다
복제 고려: 복제 환경에서는 모든 서버가 동일한 설정을 사용해야 합니다
이식성: 대소문자를 구분하지 않는 설정(1)이 가장 이식성이 좋다
기존 데이터: 설정 변경 시 기존 테이블 이름과 충돌할 수 있으므로 주의가 필요
성능: 대소문자를 구분하지 않는 설정은 약간의 성능 저하를 일으킬 수 있다
파일 시스템 고려: 대소문자를 구분하는 파일 시스템(unix/linux)에서는 0 또는 2 설정을 권장
안전하고 일관된 운영을 위해서는 모든 환경에서 lower_case_table_names=1을 사용하는 것이 좋다.
이미 운영 중인 시스템이라면 변경 시 주의가 필요하며, 새로운 시스템 구축 시 이 설정을 고려해야 한다.
'생계 > MySQL' 카테고리의 다른 글
MYSQL 파라미터 innodb_read_only 와 read_only 차이 (0) | 2024.11.19 |
---|---|
mysql 테이블 복사하는 방법 (0) | 2024.11.13 |
mysql dump 및 load 수행하는 여러가지 방법 (0) | 2024.11.10 |
mysql replication 상태 반복 체크 (0) | 2024.10.18 |
innodb 사용시 pk 의 선정 (0) | 2024.09.22 |