문제 : 스프링프레임워크를 사용 중인 프로젝트에서 오류 발생 시 rollback 처리가 되지 않음

원인 분석:
1. 메소드에 transactional 어노테이션이 추가되어 있으므로 당연히 오류 발생 시 rollback 될거라 생각했으나, 일단 기본 어노테이션 속성은 예기치 못한 오류에 대해서 rollback하므로 어노테이션에 rollback속성 지정
2. rollback 속성을 지정했음에도 rollback이 실행되지 않았고, 그대로 DB update로 이어짐
3. transaction이 생성되지 않고 그냥 처리된단 생각이 들어 application-context.xml 확인

해결 방안 : <tx:annotation-driven transaction-manager="transactionManager"/> 설정이 없어 추가

참고: annotation-driven: 등록된 bean 중 transactional 어노테이션이 붙은 것들에 transaction 적용

Posted by 知彼知己百戰不殆
,

오류 : CLIENT_PLUGIN_AUTH is required

원인 : 원인이 몇 가지 있으나 나는 mysql-connector 버전이 맞지 않는 경우에 해당. 기존에 사용하던 connector는 mysql-connector-8.2버전(최신)이었으나 오래된 현 회사 시스템에는 맞지 않는 connector였음.

해결 : mysqlconnctor-5버전대로 낮추고 진행

Posted by 知彼知己百戰不殆
,

key를 ident 값으로 주는게 있었고, 양쪽 테이블을 동일하게 맞춰났다. 하지만 프로시저에서 로직 오류가 있어서 사용하다 보니 어느 순간 두 테이블의 ident 값이 틀어져 있었고, key값으로 비교 시 이상하게 비교가 되었다.

필요: dbcc checkident(테이블명, noreseed) 는 현재 테이블의 ident 값을 가져오는 것이지만 if문에서 양쪽 값 비교 필요

해결: select IDENT_CURRENT(테이블명) 으로 하면 현재 테이블의 ident 값을 select로 가져올 수 있음

Posted by 知彼知己百戰不殆
,