eGovFrame 표준프레임워크 포털

메뉴 건너띄기
상단메뉴 바로가기
본문 바로가기

이 누리집은 대한민국 공식 전자정부 누리집입니다.

본문 영역

적용 지원, FAQ, Q&A 게시판을 통해 기술 문제 해결을 지원합니다.

묻고 답하기

무결성 제약 조건 에러가 왜 발생하나요?
  • 작성자

    이*행

  • 작성일

    2012-10-23 17:59:57

  • 조회수

    2,736

  • 구분

    공통컴포넌트

  • 진행상태

    완료

질문

java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 무결성 제약 조건(test.COMTSUSERSUMMARY_PK)에 위배됩니다

--- The error occurred in egovframework/sqlmap/com/sts/ust/EgovUserStats_SQL_Oracle.xml.
--- The error occurred while applying a parameter map.
--- Check the UserStatsDAO.summaryUserStats-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 무결성 제약 조건(test.COMTSUSERSUMMARY_PK)에 위배됩니다
; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in egovframework/sqlmap/com/sts/ust/EgovUserStats_SQL_Oracle.xml.
--- The error occurred while applying a parameter map.
--- Check the UserStatsDAO.summaryUserStats-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 무결성 제약 조건(test.COMTSUSERSUMMARY_PK)에 위배됩니다

com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in egovframework/sqlmap/com/sts/ust/EgovUserStats_SQL_Oracle.xml.
--- The error occurred while applying a parameter map.
--- Check the UserStatsDAO.summaryUserStats-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 무결성 제약 조건(test.COMTSUSERSUMMARY_PK)에 위배됩니다

첨부파일
답변

안녕하세요.. 이백행님..

오류 부분은 스케쥴러에 의해 호출이 되는데..

매일 이전 하루에 대한 데이터를 집계하도록 되어 있습니다.

설정은 context-scheduling.xml에 다음과 같이 되어 있는 부분입니다. (example)
<bean id="userStats"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="egovUserStatsScheduling" />
<property name="targetMethod" value="summaryUserStats" />
<property name="concurrent" value="false" />
</bean>

<bean id="userStatsTrigger"
class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="userStats" />
<!-- 시작하고 2분후에 실행한다. (milisecond) -->
<property name="startDelay" value="120000" />
<!-- 매 12시간마다 실행한다. (milisecond) -->
<property name="repeatInterval" value="43200000" />
</bean>

현재 설정은.. 테스트를 위해서.. 12시간 마다 호출이 되도록 되어 있으나..
실제 운영은 하루에 한번 실행을 하도록 변경하셔야 합니다.
(또한 WAS가 재기동 될 때에 2분후에 실행하도록 되어 있음)

따라서.. 이 부분은 운영에서는 SimpleTriiger 방식이 아닌 다음과 같은 CronTrigger 방식으로 변경하셔야 합니다.

<bean id="userStatsTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetailFactoryBean" />
<!-- 매 10초마다 실행 -->
<property name="cronExpression" value="0 0 1 * * ?" />
</bean>

위 설정은 매일 새벽 1시에 호출되도록 하는 설정입니다.

그럼.. 즐거운 하루되십시오.
감사합니다.

이 페이지의 구성

묻고 답하기