2023-10-31T07:51:49.780Z ERROR 171578 --- [io-8080-exec-53] o.h.engine.jdbc.spi.SqlExceptionHelper : Duplicate entry '김볼링' for key 'user_tb.name'
2023-10-31T07:51:49.794Z ERROR 171578 --- [io-8080-exec-53] c.b.s._.errors.GlobalExceptionHandler : unknown 에러 발생
org.springframework.dao.DataIntegrityViolationException: could not execute statement [Duplicate entry '김볼링' for key 'user_tb.name'] [update user_tb set created_at=?,district_id=?,email=?,img_url=?,name=?,password=?,result_image_url=?,role=? where id=?]; SQL [update user_tb set created_at=?,district_id=?,email=?,img_url=?,name=?,password=?,result_image_url=?,role=? where id=?]; constraint [user_tb.name]
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:269) ~[spring-orm-6.0.11.jar!/:6.0.11]
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:229) ~[spring-orm-6.0.11.jar!/:6.0.11]
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:565) ~[spring-orm-6.0.11.jar!/:6.0.11]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:743) ~[spring-tx-6.0.11.jar!/:6.0.11]
업데이트 할 때 userRepository에 먼저 존재하는지 확인하고 존재하면 badrequest를 던져야하겠습니다.
현재로도 unique 키 제약으로 rollback이 일어나지만 unkown 에러로 500 에러를 주는건 좋지 않습니다.
sql쪽도 try catch로 감싸는게 좋겠습니다.
Tasks
[x] 업데이트 쿼리 발생 전, 유저 이름 존재하는지 검색
[x] 업데이트 쿼리에도 try catch 추가(유저 이름 존재 검색 과 업데이트 쿼리 그 짧은 사이에 누가 선점하여 unique key 에러 발생 상황에 대응)
Description
유저 이름 업데이트에 예외 처리가 안되어있습니다.
업데이트 할 때 userRepository에 먼저 존재하는지 확인하고 존재하면 badrequest를 던져야하겠습니다.
현재로도 unique 키 제약으로 rollback이 일어나지만 unkown 에러로 500 에러를 주는건 좋지 않습니다.
sql쪽도 try catch로 감싸는게 좋겠습니다.
Tasks