3

.deb를 사용하여 Ubuntu 시스템에 MySQL Workbench (community-6.2.3)가 설치되어 있습니다.MySQL Workbench 세션에 데이터베이스 업데이트가 표시되지 않습니다.

Workbench 세션에서 다른 세션 (응용 프로그램/명령 행 클라이언트)이 수행 한 데이터베이스에 대한 업데이트 (DML)가 보이지 않습니다.
새 세션은 시작시 데이터베이스의 올바른 상태를 볼 수 있지만 나중에 발생하는 변경 사항은 볼 수 없습니다.
Workbench 세션은 Workbench에서 커밋 된 후 db와 동기화됩니다.

다른 세션에서 만든 테이블을 쿼리하려고하면 Error Code: 1412. Table definition has changed, please retry transaction 이 표시됩니다.

워크 벤치 세션이 아닌 경우 이러한 문제가없는 것 같습니다.

구성이 누락 되었습니까?


업데이트 :

이 부분적으로 예상되는 동작과 partly a bug입니다.

저는 not using autocommit mode입니다.이 경우 SELECT 문은 첫 번째 읽기에서 설정된 스냅 샷을 사용하여 실행됩니다.
이것은 REPEATABLE READ 격리 수준에 대한 동작으로, MySQL Workbench에서 사용됩니다.

MySQL Workbench 세션의 기본 격리 수준을 변경하거나 설정할 수있는 방법이 있습니까?

워크 벤치에서 실행하는 경우 :

SELECT @@Global.tx_isolation, @@tx_isolation, @@session.tx_isolation; 

반환 : 명령 행 클라이언트에 반대

READ-COMMITTED, REPEATABLE-READ, REPEATABLE-READ 

: 관련

READ-COMMITTED, READ-COMMITTED, READ-COMMITTED 

:
MySQL REPEATABLE-READ Workbench transaction level not set
MySQL Workbench and default session isolation level

+0

모든 검색어와 함께 발생합니까? – Vertig0

+0

@ Vertig0 예, 다른 세션의 삽입/업데이트/삭제는 워크 벤치에 반영되지 않습니다. – Sithsu

+0

구성 격리 수준에 따라 트랜잭션을 시작한 후 예상되는 것처럼 보입니다 ... 의도적으로 트랜잭션을 시작하지 않았다고 가정 할 수 있습니까? 'ROLLBACK; '을 실행하면 다른 세션의 변경 사항을 볼 수 있지만 문제가 남아 있습니다. 트랜잭션을 시작하지 않은 이유는 무엇입니까? –

답변

1

이것은 오래된 질문이지만 여전히 동일한 버그가 있습니다. OP가 MySQL Workbench에서 다른 스레드 (http://bugs.mysql.com/bug.php?id=69800)에서 열린 버그를 언급했습니다.

doc (https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-isolation-levels.html#isolevel_repeatable-read)에 따르면 기본 격리 수준은 REPEATABLE-READ입니다.

이것은 데이터베이스의 스냅 샷이 트랜잭션의 첫 번째 읽기에서 만들어 짐을 의미합니다. 이 트랜잭션을 읽을 때마다 스냅 샷의 데이터가 표시됩니다.

다음 트랜잭션에서 새 스냅 샷을 얻으려면 트랜잭션을 끝내야합니다 (커밋 또는 롤백).

MyCommit에서 MySQL Workbench를 설정 한 동료는 반복 읽기 동작을 볼 수 없습니다. 각 SELECT 후에 트랜잭션이 닫히고 새 스냅 샷이 생성되기 때문에 문제가 발생했다.버그가 여전히 해결되지 않는

따라서, 해결 방법은 다음과 같습니다

  • 스위치가 새로운 스냅 샷을 자동으로
  • 을 생성하는 자동 커밋 또는 각각의 새로운 스냅 샷을 생성하기 위해 선택한 후/롤백을 커밋
관련 문제