상황은 이렇습니다. 나는 서버에있는 동일한 mysql db에 연결하는 두 개의 클라이언트 프로그램을 가지고있다. 나는델파이 2007 ZeosLib 6.6 MySQL 4.1 다른 클라이언트의 트랜잭션 잠금 테이블
ZCon.TransactIsolationlevel := tiSerializable;
ZCon.AutoCommit := true;
ZCon.StartTransaction;
try
ZQGeneral.Close;
ZQGeneral.SQL.Clear;
ZQGeneral.SQL.Add('UPDATE table1 SET field1 = 1 WHERE id = 2');
ZQGeneral.ExecSQL;
ZQGeneral.Close;
ZCon.Commit;
ZCon.TransactIsolationlevel := tinone;
ZCon.AutoCommit := False;
except
ZCon.Rollback;
ZCon.TransactIsolationlevel := tinone;
ZCon.AutoCommit := False;
end;
테이블 (1)가 차단되어 다음과 같은 방법으로 테이블에 작업을 실행하고 거래를 완료 클라이언트 연결 해제 될 때까지 잠금을 해제하지 않을 때. 트랜잭션을 처음 시작한 클라이언트에서 테이블은 쓰기 가능하지만 다른 클라이언트는 읽기 전용입니다. msyql 계정에 모든 권한을 잘못 부여하지 않았기 때문에 트랜잭션 작업 후 UNLOCK 테이블을 보내려고했으나 도움이되지 않았습니다. 프로그램의 소스를 두 번 확인하여 열려있는 ZQuery를 잊어 버리지는 않았는지 확인합니다. 다른 클라이언트에 대해 table1의 잠금을 해제하지 않는 이유는 무엇입니까?
또한 동일한 동작으로 tiReadCommited 및 tiUnreadCommited를 시도했습니다. 또한 Zeos를 버전 7.2로 업그레이드하고 동일한 결과로 버전 5로 mysql을 변경하려고 시도했습니다. 아, InnoDB를 사용합니다.