개발일지/2023_한이음
[aws] rds(mysql) - 테이블명, 컬럼명 리팩토링
기억지기 개발자
2023. 9. 2. 19:24
🏕️상황

- rds에서 테이블들을 확인해 보니 똑같은 테이블이 2개씩 대소문자만 살짝씩 바뀌어서 생겨있었다.
- 원인이 정확하게 뭔지는 모르지만 일단 확실한 건 rds(mysql)에서 테이블 명이든, 칼럼명이든 모든 소문자로만 저장한다는 것이다.
- 이 상태로 둘 순 없으니 그냥 스키마를 다 날리고 새로 만들었다. (안에는 더미 데이터만 있는 상태)


- 오른쪽 entity를 정의했고, @Column을 따로 지정하지 않았으니 해당 속성 명으로 db에도 생성되어야 하는데
rds에서 확인해 보니 맘대로 언더스코어를 붙이고, 모두 소문자로 바뀌어있었다. - ⭐알아보니 로컬 Mysql 서버와 amazon rds mysql은 대소문자의 민감도가 달라서 내가 로컬에서 db를 활용했을 때 문제가 되지 않았던 부분이 rds에서는 문제가 되었던 거 같다.
🗝️해결
지금 현재 있는 11개의 테이블 모두에 @Column(name=)을 작성하여 정확하게 코드 상에 있는 필드들과 db에 있는 필드들이 정확하게 매칭되도록 하였다.
원래 그냥 넘어갈까 했는데 프로젝트 상에 있는 entity 클래스와 db에 있는 필드명이 다른 채로 내버려 두면 나중에 매핑이 안 되어 데이터 crud가 안 되는 문제를 미연에 방지하기 번거롭지만 지금에라도 잡고 가는 것이 나중에 덜 번거로울 거 같았다.
💚로컬 Mysql 서버와 amazon rds mysql의 대/소문자 민감도
로컬 MySQL 서버
로컬 MySQL 서버는 일반적으로 운영체제 설정에 따라 대소문자 민감도를 처리한다.
Windows 운영체제에서는 대소문자를 구분하지 않고 저장하고 검색할 수 있지만, Linux 또는 macOS와 같은 유닉스 기반 운영체제에서는 대소문자를 구분한다. 그러므로 로컬 MySQL 서버의 대소문자 민감도는 운영체제에 따라 다를 수 있다.
(나의 경우에 windows를 사용하고 있었기에 큰 제약이 없었다.)
Amazon RDS MySQL
Amazon RDS에서 실행되는 MySQL 서버는 보통 Linux 기반으로 설정된다.
따라서 RDS MySQL은 대소문자를 구분하고, 이것은 MySQL 설정에서도 조정 가능하지만, 일반적으로는 구분된다.
https://grogrammer.tistory.com/89
🔜 이러한 상황에 의해 엄청난 오류를 맞은 사례이다.
