코드가 있습니다:
으아악실행하고 "모든 것이 괜찮습니다!"라는 메시지를 받았습니다. 그러나 실제로 데이터베이스에는 아무것도 저장되지 않습니다. 코드는 수정 없이 몇 달 동안 실행되었습니다. 어제 갑자기 작동이 멈췄습니다.
한 시간 동안 디버깅한 후 작업이 제대로 작동하는지 확인할 수 있고 삽입하려는 레코드의 ID를 포함한 중간 결과를 "에코"할 수 있습니다. 그러나 최종 제출 후에는 데이터베이스에 아무것도 저장되지 않습니다.
트랜잭션을 제거하면 코드가 작동하고 트랜잭션에서 그랬던 것처럼 모든 것이 데이터베이스에 저장됩니다.
변경 사항의 무결성을 보장하고 거래 내부로 돌아가고 싶습니다. 또는 적어도 데이터 저장을 방해하는 코드(또는 데이터베이스 상태 등)가 무엇인지, 트랜잭션이 커밋할 수 없기 때문에 예외가 발생하지 않고 "오류"가 표시되는 이유를 알고 싶습니다.
트랜잭션 커밋이 실패하면(실제로 데이터베이스에 쓰는 경우) commit() 메서드에서 예외가 발생할 것이라고 확신했지만 그렇지 않습니다. 그것을 얻을 수 있는 방법이 있나요?
미리 감사드립니다.
문제는 코드에 있습니다. 감사합니다, @Michal Hynčica님, 정말 맞습니다. 다음과 같은 부분이 있습니다:
으아악작성자:
continue;
之前添加$tx->commit();
解决了这个很少发生的if
으아악