2014-12-17 2 views
0

우분투 12.04 게스트 VM에 MySQL 5.5.35 인스턴스가 있습니다. 나는 자동 연결을 비활성화 할 수 없습니까?

내가 SELECT ... FOR UPDATE;에 관련된 몇 가지 시나리오를 원했고 .../우회 autocommit 기능을 해제 할 수없는 것, 그래서 나는 두 개의 데이터베이스 세션 오픈 - VM을 자체에 MySQL의 워크 벤치에서 하나를, 그리고 mysql에서 다른 하나 CLI, 내 Windows 호스트에서. 두 세션 중 하나에서 내가하는 일은 즉시 다른 세션에서 볼 수 있습니다. 자동 커밋 또는 전혀 자동 커밋 설정, 트랜잭션이나 트랜잭션 (transaction), 명시 적으로 커밋 또는 명시 적으로 커밋되지는 ...

나는 다음과 같은 시도 :

1) 구성을 통해 비활성화를 효과적으로 설정

[mysqld] 
autocommit = 0 

글로벌 autocommit 변수는 SHOW GLOBAL VARIABLES에 따라 OFF로 변경됩니다. 작동하지 않습니다. 바로 그 첫 번째

set autocommit=0; 
select @@autocommit; 
+--------------+ 
| @@autocommit | 
+--------------+ 
|   1 | 
+--------------+ 

이 명령을 실행

2) 작동하지 않습니다.

start transaction; // tried begin; as well 
... 
commit; 

가 작동하지 않습니다 명시 적 트랜잭션을 여는

3).

INSERT/UPDATE 문마다 데이터베이스 설정 및 변수가 다르게 표시되는 경우에도 데이터베이스가 자동 커밋 역할을합니다 ... commit 문은 항상 0 rows affected을 반환합니다.

여기에 뭔가 빠졌습니까? 이것은 가능한 모든 방법으로 사용자/권한과 관련이 있습니까?

+0

트랜잭션 가능 DB 엔진을 사용하고 있습니까? 예 : myisam을 사용하고 있다면 트랜잭션이없고 자동 커밋은 아무런 영향을 미치지 않습니다. –

+0

Marc, 당신 말이 맞아 보이는군요 ... 엔진 유형을 확인하는 것만 큼 생각하지 않고도 MyISAM 테이블에서 모든 테스트를 수행했습니다. 제발, 당신의 의견에 답을 만들어서 받아 들일 수 있도록하십시오. – Less

답변

1

트랜잭션 가능 DB 엔진을 사용하고 있습니까? 예 : MyISAM을 사용하고 있다면 트랜잭션이없고 자동 커밋은 계속 유지됩니다.

관련 문제