테이블 하나가 자꾸 수정이 안되고 sql 에서발생.
hibernate 문제인가 아무리봐도 아님.
결국 log4j 설정하고 로그에서 업데이트시 생성되는 쿼리 캐치
(hibernate.cfg.xml에서 show_sql 프로퍼티를 1로 줌
<property name="show_sql">1</property>)

얻은 sql쿼리를 직접 실행.
역시 에러

한줄한줄 지웠다 살리면서 에러범위를 좁혀보니
exists = 1이라는 부분에서 에러
exists는 boolean저장을 위해 tinyint(1) 타입의 컬럼
다른 tinyint(1) 가진 테이블은 문제 없음.
혹시나하고 exists 컬럼명을 exist로 변경
에러없이 성공 lol

아오 슈ㅣ발 미친 exists가 예약어일줄이야
그동안 괸히 옆에있는 double타입 컬럼만 의심하고있었다.
이걸로 날린 내 6시간을 어쩔꺼야 ㅠㅠ

흠 근데 포스팅하면서 생각해보니 옛날 군대에서 쿼리문 작성할때 몇번 본거같기도 하고..

아무튼 오늘의 교훈:
hibernate를 쓸땐 꼭 log4j를 함께돌려서 에러시의 쿼리를 캐치하자.
syntax highlight 되는 쿼리편집기를 사용하자. 예약어따위 친절하게 볼드표시해주신다.




License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License
  1. chery 2008.07.03 17:32

    mysql에서 키워드랑 필드명이랑 동일할때 구분지을 수 있는게 있어요 한번 해당 컬럼을 ` ` 묶어서 해보세요 그럼 될거 같은데용 ' ' 게 아니고 키보드 숫자 1 왼쪽에 있는 ` 입니다

    • Widyou 2008.07.08 15:16 신고

      오 몰랐던 팁이네요
      하지만 hibernate를 통해 동적으로 생성되는 sql이라 어절수 없었어요

+ Recent posts