(SQL/RDBMS) 예약어가 무엇이죠?/JPA @Column(unique = true) 사용시 오류

Mino·2021년 5월 1일
0
post-thumbnail

요즘 개발중인 프로젝트에서 연관관계 매핑할 순서가 왔다...

지금까지 Spring Security 때문에 Member Entity만 작성하고 핵심 서비스 로직 개발하다가

이제서야 예전에 설계 해 놓은 DB 테이블을 보고

룰루랄라 @Entity 어노테이션을 달고
@OneToOne, @OneToMany 열심히 달고 있었는데


실행이 안된다....
error executing ddl alter table drop foreign key 오류가 몇번 반속해서 나오는데

내가 연관관계를 잘못 넣었나? 몇번 확인하고 김영한 강사님 강의도
다시 복습하고 해도 안된다...

인터넷도 검색해도 나오지 않고 혹시나 해서
@Column(unique = true)를 지우니깐 되네?

이유는 잘모르겠지만 혹시 이런 오류가 뜨면 Column 어노테이션에 unique 속성을 삭제 해 보면 될 것 같다.

혹시 정확한 이유를 알게 되면 올릴게요

그리고 위 DB 설계 한 것을 보게 되면 심각한 오류가 있다....
Member와 Download Entity의 연관관계까지 주입하고 이제 File을 작성하고 돌려보니깐
또 오류가 뜬다... 미치겠네ㅋㅋ


오류메시지를 잘 보니 private Boolean lock에 문제가 있는거 같아
혹시나 하는 마음으로 fileLock으로 바꾸고 돌려보니깐 실행이 된다.

아 SQL "예약어"를 테이블이나 칼럼명에 사용하면 안된다고 수업시간에 그렇게 배웠었는데

오래되다 보니 까먹은거 같다....


예약어가 무엇이냐면

예약어(豫約語, 영어: reserved word)는 컴퓨터 프로그래밍 언어에서 이미 문법적인 용도로 사용되고 있기 때문에 식별자로 사용할 수 없는 단어들이다. 예를 들어 C에서 return은 변수명이나 함수명으로 사용할 수 없다. 그런 단어들은 키워드이다.(출처 위키피디아)

SQL 예약어로는

ADD   AND   BEFORE    BY   CALL   CASE   CONDITION   DELETE
DESC   DESCRIBE   FROM  GROUP   IN   INDEX   INSERT
INTERVAL   IS   KEY   LIKE   LIMIT   LOCK   LONG   MATCH
NOT   OPTION   OR   ORDER   PARTITION   RANK   REFERENCES
SELECT   TABLE   TO   UPDATE   WHERE

등이 있다.

다음부터는 컬럼명이나 테이블을 생성할때 사용 하지 않는 것으로!!

profile
I I am a junior developer studying blockchain and backend. :D

0개의 댓글