문제

문제 해결됨: 감사합니다. 아래의 대답을 참조하십시오.

Tomcat 5.5에서 실행되는 웹 사이트가 Hibernate3을 사용하여 MySQL5 데이터베이스에 연결되었습니다.

한 레코드는 단순히 변경 사항을 유지하는 것을 거부합니다. 프로그래밍 방식으로 레코드를 변경하면 값이 이전의 값으로 되돌아갑니다.

데이터베이스에서 레코드를 수동으로 수정하면 값이 되돌아갑니다 (WebApp이 액세스하면 겉보기에는 겉보기에).

나는 Tomcat을 중지하고 수동으로 값을 변경 한 다음 Tomcat을 다시 시작하려고 시도했습니다. 데이터베이스를 확인하면 Tomcat이 WebApp을 시작한 후에 값이 변경되지만 사이트를로드하면 다시 되돌아갑니다.

또한 WebApp 및 .ser 캐시 파일의 Tomcat Work 폴더 삭제를 시도했습니다.

또한 복귀 중이며 찾을 수없는 값에 대한 코드를 확인했습니다.

나는이 하나의 특정 기록에서만 그것을 알아 차렸다.

편집하다: 방금 Hibernate.show_sql = true를 사용하여 Hibernate의 SQL 출력을 살펴 보았습니다. 내 행이있는 테이블에 대한 업데이트 쿼리가 있습니다. 누구든지 해결 방법을 알고 있습니까? 실제 값에 대한 열이 있습니까?

도움이 되었습니까?

해결책

MySQL 쿼리 로깅을 일시적으로 활성화하고 SQL 문이 값을 변경 한 내용을 정확히 볼 수 있습니다. 서버가 시작된 직후에 변경 되었기 때문에 진술을 매우 빨리 알아낼 수 있어야합니다.

http://dev.mysql.com/doc/refman/55.0/en/query-log.html

다른 팁

귀하의 질문에 답하기 위해 :

누구든지 해결하는 방법을 아는 사람이 있습니까? 실제 값에 대한 열이 있습니까?

당신은 이것을 할 수 있습니다 p6spy. 스프링 앱에서 이것을 설정하는 방법에 대한 지침을 사용할 수 있습니다. 여기.

그러나이 지침에 실수가 있다고 생각합니다. p6spy.log라고하는 파일은 실제로 p6spy.properties라는 이름이어야합니다.

할로윈에 가까워지고 있으므로 이런 종류의 일을 기대해야하지만 (보름달 일뿐입니다) 웹 애플리케이션에서 범인을 계속 찾고 있습니다 ... 거기에 있어야합니다. WebApp 소스 코드에서 즉시 검색 할 몇 가지 값 :

  • 레코드의 ID가 변경되었습니다.
  • 레코드에 기록되고있는 값.

행운을 빕니다 ... 이것들은 진짜 곰이 될 수 있습니다!

이것은 시동시 테스트 사례 발사와 비슷한 냄새가 나며 테스트 전에 행을 수정합니다.

업데이트 전에 트리거를 추가하고 행 ID를 확인하고 Magic Row와 일치하면 SQL 오류를 올리십시오. 그런 다음 생성 된 스택 트레이스를 점검하고 코드를 걸고 행을 업데이트하는 조각을 찾습니다.

Thanks to everyone for the help. All of the suggestions came in handy for tracking it down.

I've managed to find out what was causing it. Bad database design, multiple data models and Hibernate makes for some nasty stuff. Another table had the value stored and that class was extending a base class with the same value.

Time to look at doing some normalisation.

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