본문 바로가기
[AWS-RDP]/RDS

[중요] AWS RDS MySQL 8 대소문자 구분 안하도록 설정하기

by METAVERSE STORY 2023. 4. 4.
반응형
728x170

 

 

 

처음 DB를 생성 할 때 부터 lower_case_table_names = 1으로 설정된 파라미터 그룹을

사용하면 MySQL 8 RDS에서도 테이블 조회시 대소문자 구분 잘 됨.

 

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/MySQL.KnownIssuesAndLimitations.html

 

Amazon RDS for MySQL에 대해 알려진 문제 및 제한 - Amazon Relational Database Service

일부 기존 DB 인스턴스에는 하한이 있습니다. 예를 들어, 2014년 4월 이전에 생성된 MySQL DB 인스턴스의 파일 및 테이블 크기 제한이 2TB입니다. 이 2TB 파일 크기 제한은 DB 인스턴스 생성 시기와 상관

docs.aws.amazon.com

 

 

 

 

 

✔ AWS RDS MySQL8 대소문자 구분 안하도록 설정

 

안녕하세요, 이번에 정리할 내용은 AWS RDS에 MySQL 데이터베이스를 생성했을 때, 

대소문자 구분을 설정하는 방법에 대해 알아보겠습니다.

 

 

아래와 같은 댓글을 남겨주셔서 참고해보시면 좋을 듯 합니다. 공유해주셔서 감사합니다. 👼

※ 같은 문제로 이 글을 검색하게 되었는데요. 파라미터 그룹 변경은 안되지만 처음 DB를 생성 할 때 부터 lower_case_table_names = 1으로 설정된 파라미터 그룹을 사용하면 MySQL 8 RDS에서도 테이블 조회시 대소문자 구분 잘 됩니다.

 

 

※ 결론을 미리 말씀드리면, MySQL 8버전에는 lower_case_table_names 의 값을 0만 지원한다고 합니다.

 

https://forums.aws.amazon.com/thread.jspa?messageID=918406

0은, 대소문자 구분을 하도록 default 값입니다 ..

따라서 아래 내용들은 모두 삽질의 과정이며, 저의 경우 MySQL 5버전대로 DB를 다시 생성했습니다. 😥😥


 

 

 

 

 

🎵 먼저 다음 명령어를 통해 현재 대소문자 구분 설정값을 확인합니다.

 

SHOW VARIABLES LIKE 'lower_case_table_names';

  • lower_case_table_names가  0 일 경우 대소문자를 구분합니다.
  • lower_case_table_names 1일 경우 대소문자를 구분하지 않습니다.

따라서 대소문자 구분을 하지않도록 설정하려면 위의 값을 1로 변경해주어야 합니다.

 

 

 

 

 

만약 대소문자 구분을 하도록 설정이 되어있으면, 위와 같이 대소문자가 틀릴경우 조회가 되지 않습니다.

 

 

 

 

 

AWS RDS > 데이터베이스 > DB 식별자를 클릭합니다.

 

 

 

 

구성 > 파라미터 그룹의 DB를 클릭합니다.

 

 

 

 

파라미터에 lower 로 검색을 한 뒤 lower_case_table_names를 체크하고 파라미터 편집을 클릭합니다.

 

 

 

 

 

다음과 같이 값에 1을 작성하고 변경 사항 저장을 클릭합니다.

 

 

 

 

The parameter value for lower_case_table_names can't be changed for parameter group one-line-rds, because it is associated with one or more MySQL 8.0 DB instances. (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 06273803-ee8c-4926-9851-ef8ae76c8f59; Proxy: null)

 

 

저장을 하면 위와 같이 lower_case_table_names는 변경할 수 없다는 오류가 발생합니다... 😢

 

 

 

 

 

🎗 해결책은 ?

lower_case_table_names는 변경할 수 없는 부분이어서 파라미터 그룹을 새로 생성하고 설정을 해야합니다.. 🤬

 

 

 

 

파라미터 그룹에서 파라미터 그룹 생성을 클릭합니다.

 

 

 

 

그룹 이름 및 설명 을 작성하고 생성을 클릭합니다.

 

 

 

 

생성된 파라미터 그룹을 체크하고, 파라미터 그룹 작업 > 편집 을 클릭합니다.

 

 

 

 

그 후 파라미터에서 검색 후 다음 부분을 설정합니다.

(MySQL 기본 설정 및 대소문자 구분 설정 입니다.)

  • time_zone 검색 후 time_zone 파라미터를 Asia/Seoul 로 변경합니다.
  • char 검색 후 character_set ~ 나오는 항목의 값을 모두 utf8mb4 로 변경합니다.
  • collation 으로 검색 후 collation_connection, collation_server의 값을 utf8_mb4_general_ci로 변경합니다.
  • lower_case 검색 후 lower_case_table_names 의 값을 1 로 변경합니다. (대소문자 구분 X)

 

 

 

 

위 설정이 끝났으면 RDS DB의 파라미터 그룹을 변경해주어야 합니다.

데이터베이스 > DB 식별자 > 수정 을 클릭합니다.

 

 

 

 

아래로 내려와서 데이터베이스 옵션에서 DB 파라미터 그룹을 위에서 생성한 그룹으로 수정합니다.

그 후 가장 아래의 계속 버튼을 클릭합니다.

 

 

 

 

그럼 위와 같이 현재 값 / 새 값의 파라미터 그룹이 나옵니다.

DB 인스턴스 수정을 클릭합니다 ! 😁

 

 

 

 

🤬 MySQL 8.0 DB에서는 lower_case_table_names의 parameter value(1)을 설정할 수 없나봅니다...

 

 

 

 

https://forums.aws.amazon.com/thread.jspa?messageID=918406

음,, 찾아보니 MySQL 8은 lower_case_table_names의 값을 0만 지원한다고 합니다...

 

 

 

따라서 저는 MySQL 5버전대로 DB를 다시 생성해주었습니다........ 🤬🤬🤬

 

 

 

MySQL 5버전대를 생성한 후 위에서 설정한 파라미터 그룹(lower_case_table_names = 1) 으로 설정하시면 됩니다.

 

 

 

 

 

출처 : https://zzang9ha.tistory.com/328

반응형
그리드형

댓글