[spring] You have an error in your SQL syntax; check the manual thatcorresponds to your MYSQL server version for the right syntax to use near 해결

sujin·2023년 6월 21일
0

spring

목록 보기
5/13

You have an error in your SQL syntax; check the manual thatcorresponds to your MYSQL server version for the right syntax to use near

아무리봐도 syntax 에러를 발생시킬 속성이 존재하지 않았다.
에러 로그 그대로 구글링을 진행해봤을 때 대부분 예약어때문에 발생한다고 나와있었다.

 @Id @GeneratedValue
    private Long id;
    private String title;
    private String memo;
    private String key;
    private QrStatus qrStatus;

    @Embedded
    Address address;
    @Embedded
    PhoneNumber phoneNumber;
    @Column(name="url", columnDefinition = "MEDIUMBLOB")
    private String url;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "member_id")
    private Member member;


    private LocalDateTime createDate;
    private LocalDateTime updateDate;

    
    ...
    

도대체 어디서 나는 에러란 말인가... 생각을 해봤는데 이전에는 잘 돌아갔는데 지금 안 되는거니까 새롭게 추가한 key, qrStatus 둘중 하나로 추려졌다!
ㅎㅎㅎㅎ 그렇다면 enum type인 qrStatus는 아닐테고 당연히 key!
근데 Key가 당연히 예약어가 아닌줄 알았다!

그래서 뻘짓이 시작되었다~
예약어 오류가 아니라 ddl을 create로 해놨는데 이것때문에 외래키에서 걸려서 alter table을 할 때 테이블을 찾지 못하는 에러인가 생각을 해봤다. 로그를 보니 alter table하고 create를 진행하는데 drop도 아니고 create라서 외래키 사이에서도 문제가 되어보이지 않았다.

그래서 혹시 key가 설마 예약어인가 찾아봤다.

wow! key는 예약어

 private String qrcodeKey;

로 냅다 바꾸고 spring data jpa에서 key를 사용해서 findQrcode를 진행중이였기에 findQrcodeByQrcodeKey로 바꾸고 다시 돌리니가 정상적으로 돌아갔다

느낀점

혹시나가 역시나...!
내가 생각한대로 지레짐작 하지 말자,,,,^^ 일단 코드로 돌려보자

0개의 댓글