Spring/Spring Data JPA26 오류- Lock wait timeout exceeded; try restarting transaction 오류- Lock wait timeout exceeded; try restarting transactiondb에서 갑자기 락이발생했다고 하며 업데이트하는 쿼리가 타임아웃이발생하며 다음과 같은 오류가 발생했다. Lock wait timeout exceeded; try restarting transaction 검색을 해보니 정말 다양한 이유에 의해 락이 발생하는 것을 확인했고, 상황에 따라 다르게 해결해야 했다.우리가 겪은 부분은 delete 와 insert,update 에대한 트렌젝션 처리기 한곳에 묶여있기 때문이었다. 삭제를 하고나서 트렉젝션으로 묶었으니 락이걸렸고 , 새로운 트렉젝션으로 업데으트를 하려니 업데이트나, 인설트를 하지 못해서 해당 오류가 나고있었다.코드는 다음과 같다.AClass { m.. 2023. 5. 25. found [text (Types#LONGVARCHAR)], but expecting [varchar(255) (Types#VARCHAR)] found [text (Types#LONGVARCHAR)], but expecting [varchar(255) (Types#VARCHAR)] 실제 컬럼은 TEXT로 해두었는데 jpa 서는 Object에 String 으로만 선언되어 있으니 validation 이다르다고 한다. 두가지 방법이 있다고 해서 해보면 하나만 된다. @lob 사용은 안된다. @Lob private String requestDetail; @Column(columnDefinition = "text") -> 깔끔하게 선언해주고 사용하면 잘된다. @Column(columnDefinition = "text") private String requestDetail; 2023. 3. 8. No EntityManager with actual transaction available for current thread - cannot reliably process 'merge' call EntityManager 를 이용하여 mearge 문을 사용하거나 insert를 사용할때... 다음과 같은 오류가 났다. No EntityManager with actual transaction available for current thread - cannot reliably process 'merge' call transaction 관련된 설정이 없다고해서 확인해보니 역시나... @Transactional 을 설정하지 않았다. @Transactional public void update(T abstractAdEntity) { try { entityManager.merge(abstractAdEntity); entityManager.flush(); } catch (Exception e) { e.print.. 2022. 5. 24. Hibernate(JPA) 영속성 (persistence) Hibernate(JPA) 영속성 (persistence) JPA/ Hibernate 를 사용할때 대부분 생명주기를 모른상태에서 개발을 하다보면 실수? 혹은 왜 이렇게 되지 하는 경우를 겪게 된다. 알고 있더라도 왜이러지 이럴때가 있다! 어? 왜이렇게 동작하지 하고 말이다. 1. Entity life sycle (엔티티생명주기) 비영속(new/transient) 영속성 컨텍스트와 전혀 관련이 없는 상태 영속 (managed) 영속성 컨덱스트에 저장된 상태 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제(removed) 삭제된상태 1.1 비영속성(new) 앞서 이야기 했듯이 영속성 컨텍스트와 전혀 관련이 없는 상태로 엔티티를 새로 생성한 단계이다. MemberEntity memb.. 2022. 4. 22. 이전 1 2 3 4 ··· 7 다음 728x90