문제

그래서 저는 2개의 데이터베이스 인스턴스를 가지고 있습니다. 하나는 일반 개발용이고 다른 하나는 단위 테스트용 개발에서 복사되었습니다.

개발 데이터베이스에서 뭔가 변경된 것을 알 수 없고, 무엇이 다른지 어떻게 확인해야 할지 모르겠습니다.

예를 들어 특정 테이블에서 삭제하려고 하면 다음과 같습니다.

delete from myschema.mytable where id = 555

삭제된 행이 없음을 나타내는 단위 테스트 DB로부터 다음과 같은 정상적인 응답을 받았습니다.

SQL0100W FETCH, UPDATE 또는 DELETE에 대한 행을 찾을 수 없습니다.또는 쿼리 결과가 빈 테이블입니다.SQLSTATE=02000

그러나 다음 오류로 인해 개발 데이터베이스가 전혀 삭제되지 않습니다.

DB21034E 명령이 올바른 명령행 처리기 명령이 아니기 때문에 SQL문으로 처리되었습니다.SQL 처리 중에 다음이 반환되었습니다.SQL0440N 호환 가능한 인수가 있는 "FUNCTION" 유형의 "="이라는 권한 부여된 루틴을 찾을 수 없습니다.SQLSTATE=42884

내 추측으로는 추가되거나 변경된 일부 트리거 또는 뷰가 문제를 일으키는 것으로 추측되지만 문제를 찾는 방법을 모르겠습니다...이 문제가 있는 사람이 있거나 문제의 근본 원인을 알아내는 방법을 아는 사람이 있습니까?

(이것은 DB2 데이터베이스입니다.)

도움이 되었습니까?

해결책

흠, 이 질문에 위대한 오라클을 적용하여 나는 다음과 같은 결론을 내렸습니다.

http://bytes.com/forum/thread830774.html

다른 테이블에 문제가 있는 테이블을 가리키는 외래 키가 있는 것으로 보이며, 다른 테이블의 FK가 삭제되면 삭제가 다시 작동해야 합니다.(아마도 외래 키를 다시 만들 수도 있습니다)

그게 도움이 되나요?

다른 팁

개발 DB에 공개 트랜잭션이 있을 수 있습니다. SQL Server에서 가끔 그런 일이 발생합니다.

555와 호환되는 ID 유형인가요?아니면 정수가 아닌 유형으로 변경되었나요?

또는 555 인수가 어떻게든 누락됩니까(예:JDBC를 사용 중이고 준비된 명령문이 쿼리를 실행하기 전에 인수 세트를 가져오지 못한 경우)?

질문에 더 추가할 수 있나요?해당 오류는 SQL 문 파서가 귀하의 문에 대해 매우 혼란스러워하는 것처럼 들립니다.id = 555 행에 대해 해당 테이블에서 선택을 수행할 수 있습니까?

해당 테이블에서 RUNSTATS 및 REORG TABLE을 실행해 볼 수 있습니다. 이는 불안정한 테이블을 정렬하는 데 사용됩니다.

@표류자

동일한 "위치" 조건을 가진 선택은 잘 작동하지만 삭제되지는 않습니다.runstats나 reorg 테이블 모두 문제에 영향을 미치지 않습니다.

@표류자

우리는 실제로 문제를 해결했으며 실제로 귀하가 말한 그대로입니다(동료도 정확히 동일한 페이지를 찾았습니다).

해결책은 외래 키 제약 조건을 삭제하고 다시 추가하는 것이었습니다.

해당 주제에 대한 또 다른 게시물:

http://www.ibm.com/developerworks/forums/thread.jspa?threadID=208277&tstart=-1

이는 문제가 참조 제약 조건 손상이며 실제로 또는 아마도 어쨌든 최신 버전의 db2 V9(아직 사용하지 않음)에서 수정되었음을 나타냅니다.

도와 주셔서 감사합니다!

1을 확인하십시오.트리거, 절차, 함수 등에 대한 인수2.인수의 데이터 유형.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top