찾다

 >  Q&A  >  본문

Yii2 Mariadb 트랜잭션이 성공적으로 제출되었지만 데이터베이스에 데이터가 저장되지 않았습니다.

코드가 있습니다:

으아악

실행하고 "모든 것이 괜찮습니다!"라는 메시지를 받았습니다. 그러나 실제로 데이터베이스에는 아무것도 저장되지 않습니다. 코드는 수정 없이 몇 달 동안 실행되었습니다. 어제 갑자기 작동이 멈췄습니다.

한 시간 동안 디버깅한 후 작업이 제대로 작동하는지 확인할 수 있고 삽입하려는 레코드의 ID를 포함한 중간 결과를 "에코"할 수 있습니다. 그러나 최종 제출 후에는 데이터베이스에 아무것도 저장되지 않습니다.

트랜잭션을 제거하면 코드가 작동하고 트랜잭션에서 그랬던 것처럼 모든 것이 데이터베이스에 저장됩니다.

변경 사항의 무결성을 보장하고 거래 내부로 돌아가고 싶습니다. 또는 적어도 데이터 저장을 방해하는 코드(또는 데이터베이스 상태 등)가 무엇인지, 트랜잭션이 커밋할 수 없기 때문에 예외가 발생하지 않고 "오류"가 표시되는 이유를 알고 싶습니다.

트랜잭션 커밋이 실패하면(실제로 데이터베이스에 쓰는 경우) commit() 메서드에서 예외가 발생할 것이라고 확신했지만 그렇지 않습니다. 그것을 얻을 수 있는 방법이 있나요?

미리 감사드립니다.

P粉386318086P粉386318086228일 전461

모든 응답(1)나는 대답할 것이다

  • P粉715304239

    P粉7153042392024-03-31 09:04:28

    문제는 코드에 있습니다. 감사합니다, @Michal Hynčica님, 정말 맞습니다. 다음과 같은 부분이 있습니다:

    으아악

    작성자:continue; 之前添加 $tx->commit(); 解决了这个很少发生的 if 으아악

    회신하다
    0
  • 취소회신하다