You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[🔴ERROR] - (DELETE /admin/api/v1/stages/1)
(id: 1, role: ADMIN) org.springframework.dao.DataIntegrityViolationException: could not execute statement [Cannot delete or update a parent row: a foreign key constraint fails (`festago`.`stage_artist`, CONSTRAINT `fk_stage_artist__stage` FOREIGN KEY (`stage_id`) REFERENCES `stage` (`id`))] [delete from stage where id=?]; SQL [delete from stage where id=?]; constraint [null]
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:269)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:229)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:243)
StageDeleteServiceTest로 삭제되는 것이 검증이 되었지만, DB 구현체의 제약 조건으로 인해 해당 버그를 런타임 환경에서 확인할 수 있었네요. 😂
이래서 현업에서는 외래키 제약을 걸지 않는건가 싶기도 합니다.
(비즈니스 로직의 순서가 DB 구현체 때문에 순서가 강제됨)
⏰ 예상 소요 시간
10분
The text was updated successfully, but these errors were encountered:
✨ 세부 내용
공연을 삭제하려고 하면 다음과 같이 외래키 제약 조건 예외가 발생하며 에러가 발생합니다.
이유는 삭제 로직이 다음과 같이 구현되어 있기 때문인데
해결 방법은 다음과 같이
stageArtistRepository.deleteByStageId()
메서드를 먼저 호출해야 합니다.StageDeleteServiceTest
로 삭제되는 것이 검증이 되었지만, DB 구현체의 제약 조건으로 인해 해당 버그를 런타임 환경에서 확인할 수 있었네요. 😂이래서 현업에서는 외래키 제약을 걸지 않는건가 싶기도 합니다.
(비즈니스 로직의 순서가 DB 구현체 때문에 순서가 강제됨)
⏰ 예상 소요 시간
10분
The text was updated successfully, but these errors were encountered: