MySQL/MariaDB 데이터 베이스에서 기본 설정은 테이블명의 대소문자를 구분하고 있습니다.
소문자로 생성한 테이블을 조회시 대문자로 조회를 하게 되면 테이블 명을 찾을 수 없다고 나옵니다.
대소 구분은 lower_case_table_names 라는 변수의 값에 영향을 받습니다.
https://mariadb.com/kb/ko/identifier-case-sensitivity/
- 0인 경우(Unix 기반 시스템 기본값), 대/소문자를 구분하도록 설정됩니다. (기본 값)
- 1인 경우(Windows 시스템 기본값), 이름이 소문자로 저장되고 대/소문자를 구분하지 않습니다.
- 2인 경우(Mac OS X 시스템 기본값), 이름은 선언된 대로 저장되고 소문자로 비교됩니다.
AWS RDS 에서 lower_case_table_names의 값을 수정하기 위해서는 파라메터 그룹에서 해당 값을 변경 후 데이터베이스를 재시작 해주어야 합니다.
파라메터 그룹을 생성하지 않은경우 새로 만들고 데이터베이스와 연결 해야 합니다.
참고 : https://velog.io/@shawnhansh/AWS-RDSmySql-프리티어-생성하기
주의 1 : AWS에서 제공하는 MySQL/MariaDB의 경우 lower_case_table_names=2 를 지원하지 않습니다.
참고 : Amazon RDS for MySQL에 대한 내용이지만 MariaDB에도 동일합니다.
버전에 따라 적용이 다르므로 아래 글을 참고 하시기 바랍니다.
주의 2 : 테이블을 생성하기 전에 값을 결정하세요
lower_case_table_names 값은 테이블 명의 collection 등에 영향을 미치는 것으로 추정됩니다.
해당 값을 변경하기 전에 생성된 테이블명은 값을 변경한 후에는 대문자로도 소문자로도 찾지 못하는 현상에 봉착 할 수 있습니다.
해당 값을 변경 후 테이블 명을 인식하지 못하는 경우 원래 값으로 복원 하면 원래 테이블을 생성한 이름으로 인식가능합니다.
lower_case_table_names=1로 변경한 후에 생성한 테이블은 소문자, 대문자 모두 인식합니다.
주의3 : 마이그레이션 등을 수행하는 경우 반드시 사전에 원본 DB와 해당 값을 일치시켜야 합니다.
불일치 하는 경우 문제가 발생할 수 있다고 합니다. 반드시 사전 테스트가 필요 합니다.
주의4: 해당값을 수정후 파라메터 그룹이 데이터베이스와 연결되어 있는경우 자동으로 적용을 하는 것으로 보여지지만 해당 데이터베이스를 재시작 해야 적용됩니다. (MySQL 5.3이하에서는 바로 적용 되지만 최근 버전에서는 재시작을 해야 적용됩니다.)
끝.
'DataBase' 카테고리의 다른 글
[MariaDB] 보안 취약점 점검 #8 감사 로그 관리 (0) | 2025.03.13 |
---|---|
[MariaDB] 보안 취약점 점검 #7 감사 정책 준비 (0) | 2025.03.01 |
[MariaDB] 보안 취약점 점검 #6 사용자 계정 생성 (0) | 2025.02.26 |
[MariaDB] 보안 취약점 점검 #5 root 계정 보안 (0) | 2025.02.26 |
[MariaDB] 보안 취약점 점검 #4 비밀번호 정책 적용 (0) | 2025.02.25 |