AWS RDS MySQL 대소문자 구분 안하도록 설정
프로젝트에서 DB를 RDS로 사용하기로 결정하여 RDS로 DB인스턴스를 생성하고 spring boot 프로퍼티에 설정후 실행하던중 Table 이 존재하지 않는다는 에러가 발생하였다.
확인해보니 대소문자를 구분하고 있기 때문에 spring boot에서는 대분자로 테이블과 매핑하려고 하여 에러가 발생한것이었다.
</small>
SHOW VARIABLES LIKE 'lower_case_table_names';
현재 대소문자 구분설정을 확인해보려면 위와같이 명령어를 치면 된다.
- lower_case_table_names = 0 일 경우 대소문자를 구분한다.
-
lower_case_table_names = 1 일 경우 대소문자를 구분하지 않는다.
** default는 0 으로 세팅된다.
lower_case_table_names 를 1 로 바꿔주면 대소문자를 구분하지 않을것이다.
AWS RDS에 접속 > 수정하려는 인스턴스 선택 > 구성탭 선택 > 파라미터 그룹 클릭
lower 로 검색창에 필터링해서 lower_case_table_names를 1로 바꿔준다.
해당내용 저장 후 RDS인스턴스를 재시작하면 해당내용이 반영 된다.
주의 할 점
- 파라미터 그룹 설정을 수정하기 전 ddl을 수정하거나 하면 테이블 등이 꼬일수도 있다 (내가 그랬음 ;;)
- 검색해보니 위의 내용은 mysql 8.xx이전 버전에서만 적용가능하고 8.xx이상의 버전에서는 인스턴스를 생성후에는 lower_case_table_names 를 못바꾸는것 같다. 인스턴스 생성할때 lower_case_table_names = 1 로 설정해주자!</small>