< 에러 메시지 >
4월 25, 2024 4:34:21 오후 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: 경로 [/04]의 컨텍스트 내의 서블릿 [pf]을(를) 위한 Servlet.service() 호출이, 근본 원인(root cause)과 함께, 예외 [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: StatementCallback; SQL [INSERT INTO forum.member_auth (member_seq, auth_num, auth_uri, reg_dtm, expire_dtm, auth_yn) VALUES( '0', '', '4b84e9f5fa284f418056505e930aad1d', DATE_FORMAT(NOW() ,'%Y%m%d%H%i%s'), DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 40 MINUTE), '%Y%m%d%H%i%s') , 'N'); ]; Cannot add or update a child row: a foreign key constraint fails (`forum`.`member_auth`, CONSTRAINT `member_auth_FK_01` FOREIGN KEY (`member_seq`) REFERENCES `member` (`member_seq`)); nested exception is java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`forum`.`member_auth`, CONSTRAINT `member_auth_FK_01` FOREIGN KEY (`member_seq`) REFERENCES `member` (`member_seq`))]을(를) 발생시켰습니다.
java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`forum`.`member_auth`, CONSTRAINT `member_auth_FK_01` FOREIGN KEY (`member_seq`) REFERENCES `member` (`member_seq`))
DataIntegrityViolationException
- RuntimeException 으로 뭔가 잘못된 데이터가 바인딩 되었을때 발생하는 에러
- SQL 문이 잘못되었거나 Data 가 잘못되었을경우
SQLIntegrityConstraintViolationException
- 무결성 제약조건에 위배로 발생하는 에러
< 원인 >
forum.member 테이블에는 값이 추가되었지만 forum.member_auth 테이블에서 값을 추가하지 못하고 에러발생
forum.member_auth 테이블에 새로운 행을 추가하려고 시도했지만, 부모 테이블인 member의 해당하는 키 값을 찾을 수 없어서 발생
즉, forum.member_auth 테이블의 member_seq 열이 member 테이블의 member_seq 열을 참조하는 외래 키(FK) 제약 조건을 위반으로 발생한 에러
public int addAuthInfo(MemberAuthDto memberAuthDto) {
String sql ="INSERT INTO forum.member_auth "
+ "(member_seq, auth_num, auth_uri, reg_dtm, expire_dtm, auth_yn) "
+ "VALUES( '" + memberAuthDto.getAuthSeq()
+ "', '', '" + memberAuthDto.getAuthUri()
+ "', DATE_FORMAT(NOW() ,'%Y%m%d%H%i%s'), "
+ "DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 40 MINUTE), '%Y%m%d%H%i%s') , 'N'); ";
return update(sql);
}
MemberAuthDao에 addAuthInfo메서드에서 sql문에 member_seq에 memberSeq가 아닌 authSeq를 넣어줘서 에러 발생
< 해결 >
public int addAuthInfo(MemberAuthDto memberAuthDto) {
String sql ="INSERT INTO forum.member_auth "
+ "(member_seq, auth_num, auth_uri, reg_dtm, expire_dtm, auth_yn) "
+ "VALUES( '" + memberAuthDto.getMemberSeq()
+ "', '', '" + memberAuthDto.getAuthUri()
+ "', DATE_FORMAT(NOW() ,'%Y%m%d%H%i%s'), "
+ "DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 40 MINUTE), '%Y%m%d%H%i%s') , 'N'); ";
return update(sql);
}
MemberAuthDao에 addAuthInfo메서드에서 sql문에 member_seq에 memberSeq값으로 넣어주게 변경
'에러 모음' 카테고리의 다른 글
IncorrectResultSetColumnCountException (0) | 2024.04.25 |
---|---|
CannotGetJdbcConnectionException, CommunicationsException (0) | 2024.04.25 |
NotWritablePropertyException, BeanCreationException (0) | 2024.04.25 |
JasperException (0) | 2024.04.20 |
IllegalStateException (0) | 2024.04.20 |