2012-05-04 2 views
2

LAN에서 실행되는 Java 응용 프로그램을 개발 중입니다. 문제가 생겼습니다. 새로운 데이터를 삽입하면 COMMIT 이후에도 다른 클라이언트가 레코드를 볼 수 없습니다.MySQL + Java 트랜잭션

트랜잭션을 사용하고 있습니다. MySQL INNODB 엔진입니다. 트랜잭션을 종료하면 autoCommit 모드를 true로 설정해야합니다.

하지만 커밋이 autoCommit 모드를 원래 상태로 되돌리지 않았습니까? 튜토리얼 이후 이상한 점은 rollback이나 commit 할 때 autoCommitMode가 자동으로 true로 설정된다는 것입니다.

어떤 아이디어가 있습니까?

+1

다른 클라이언트가 레코드 세트를 새로 고쳤습니까? 레코드 집합은 기본 데이터베이스에 연결되지 않습니다. – Namphibian

+0

예 그들은 테이블을 새로 고치지 만 레코드가 표시되지 않습니다. 다른 클라이언트가 응용 프로그램을 닫고 다시 연결하면 표시됩니다. – Motasem

+0

"connection.commit();"을 사용하고 있습니까? 또는 커밋을 수동으로 실행하고 있습니까? – Jaydee

답변

0

연결이 완료되면 모든 자동 커밋 모드가 항상 명시 적으로 변경됩니다. 트랜잭션 커밋/롤백은 자동 커밋 플래그에 영향을주지 않습니다.

다른 클라이언트가 다시 연결 한 후 레코드를 보는 경우 문제가 있음을 의미합니다.