C# ‘제약 조건을 활성화하지 못했습니다.’ 오류 해결 방법


C# 윈폼으로 개발한 프로그램이 그동안 이상 없이 잘 실행되다가 어느 순간부터 “제약 조건을 활성화하지 못했습니다.“라는 오류가 나타나는 일이 발생했습니다.

DataSet에서 TableAdapter의 Fill() 또는 FillBy()를 사용해서 테이블의 데이터를 처리(SELECT, INSERT, UPDATE)하는 단순한 윈폼 프로그램이었습니다.

1년 이상 실행해서 잘 사용하든 프로그램이라 프로그램 자체에는 문제가 없는 걸로 보입니다. 따라서 테이블의 데이터에 문제가 있는 걸로 여겨지는데 DB에 접근해서 확인하기가 곤란한 경우 오류를 처리하기가 무척 난감해 집니다.

이럴 경우 간단하게 오류를 해결하는 방법에 대해서 알아보겠습니다.

참고로 말씀드리면 아래 방법이 해당 오류에 대해서 모두 해결한다고는 보장드릴 수 없습니다.

“제약 조건을 활성화하지 못했습니다.” 전체 오류 내용

– 전체 오류 내용 내용은 아래와 같습니다.

오류 내용 : 제약 조건을 활성화하지 못했습니다. 하나 이상의 행에 NOT NULL, UNIQUE 또는 외래 키 제약 조건을 위반하는 값이 있습니다.

특이하게도 처음 FillBy를 실행했을 때만 해당 오류가 나타나고, 다시 조회를 실행해서 FillBy를 재실행하면 오류가 나타나지 않습니다.

"제약 조건을 활성화하지 못했습니다." 전체 오류 내용

“제약 조건을 활성화하지 못했습니다.” 오류 해결 방법

DataSet의 속성에서 EnforceConstraints의 속성 값을 “False로 해주면 간단히 해결됩니다.

EnforceConstraints 속성은 ‘업데이트 작업을 수행할 때 제약 조건 규칙을 따르는지 여부를 나타내는 값을 가져오거나 설정‘할 때 사용하는 속성입니다.

속성 값이 “True“면 제약 조건 규칙이 적용되고, 속성 값이 “False“면 제약 조건 규칙이 적용되지 않습니다기본값은 “True”입니다.

"제약 조건을 활성화하지 못했습니다." 오류 해결 방법

EnforceConstraints 속성 값을 “False”로 했다고 해서 DB의 테이블에 중복 키 값의 데이터가 추가되지는 않습니다.

만약 중복 Key 값의 데이터가 INSERT 되는 경우 DB에서 오류를 발생시키게 됩니다.

EnforceConstraints 속성 값을 “True”로 해 줌으로써 DB로 넘어가지 전에 프로그램에서 체크가 가능해 집니다.





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기