BankSystem, 데이터베이스 삽질

yshjft·2022년 1월 22일
0

Bank System

목록 보기
12/14

이전에 sequelize를 이용하여 데이터베이스를 자동을 생성했던 것과 다르게 이번에는 DDL을 직접 입력하였다. DDL을 하나하나 짠것은 아니고 ddl-auto: create 때 log에 나오는 DDL을 조금 손을 본후 복사 붙여 넣기 하였다. 지금부터는 이짓을 하며 경험한 삽질을 기록하겠다.

✔︎ query lower case

사실 rds를 생성하고 난후 파라미터 수정을 통해 query lower case를 적용하려고 하였다. 문제 이 때 mysql 8버전을 사용하고 있었는데 8버전 부터는 query lower case를 적용시킬 수 없었다. 따라서 log에 나왔던 DDL들을 모두 대문자로 바꾸어주었다. 문제는 대문자로 바꿔준다는 것을 테이블 name과 column name 모두 대문자로 바꾸어 버린 것이었다.😮‍💨 어쩔 수 없이 테이블을 모두 지우고 DDL을 올바르게 수정한 후 다시 테이블을 생성해 주었다.

✔︎ java.sql.SQLSyntaxErrorException: Table 'bank_system.hibernate_sequence' doesn't exist

Entity의 ID값 설정 전략이 GenerationType.AUTO였기에 발생한 문제이다. 존재하지도 않는 hibernate_sequence를 데이터를 추가할 때 마다 조회하게되어 문제가 발생한 것이다. 나는 DB로 Mysql을 사용하였기에 GenerationType.IDENTITY로 변경해주었다.

✔︎ field id doesn't have a default value

DDL에서 PK에 auto_increment를 적용하는 것을 잊었다;;

✔︎ 결론

개발을 시작할 때 부터 DB에 맞는 ID값 생성 전략을 택하며 DDL 소문자 대문자를 주의해야겠다. 또한 DDL을 직접 입력할 경우 PK에 auto_incremet를 주의하자!!
(그냥 다음부터 h2말고 mysql을 개발 DB로 쓸까?)

profile
꾸준히 나아가자 🐢

0개의 댓글