2011-04-30 9 views
8

일시적으로 "wait_timeout"을 기본 28800 초가 아닌 60 초로 줄여 연결 시간 초과 오류를 재현하려고합니다.MySql 'wait_timeout'전역 변수 대 변수

my_ini 파일에 wait_timeout = 60을 추가하고 MySql을 다시 시작했습니다. 불행히도, 나는 여전히 28800 초를 기다리지 않고 오류 상태를 재현 할 수 없다.

아래의 쿼리는 "wait_timeout"이 전역 변수 수준에서 60으로 설정되었지만 일반 변수의 경우 28800 초로 설정되었음을 나타냅니다 (세션 변수와 동일합니까?).

어떻게 해결할 수 있습니까? my.ini의 설정을 덮어 쓰는 방법은 무엇입니까?

나는 여전히 약간의 MySQL 관리자 놈으로 어떤 조언을 주셔서 감사합니다. :)

Windows XP에서 MySql 5.5.10을 실행 중입니다. MySQL의 문서에서

mysql> show variables like 'wait_timeout'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| wait_timeout | 28800 | 
+---------------+-------+ 
1 row in set (0.00 sec) 

mysql> show global variables like 'wait_timeout'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| wait_timeout | 60 | 
+---------------+-------+ 
1 row in set (0.00 sec) 

답변

7

: wait_timeout :

스레드 시작에

, 세션 타임 아웃 (wait_timeout)의 값은 글로벌 아웃 (wait_timeout) 값 또는 글로벌 interactive_timeout 값으로부터 초기화되면, 에 따라 클라이언트 유형 (CLIENT_INTERACTIVE 연결 옵션에 정의 된대로 mysql_real_connect()). interactive_timeout을 참조하십시오.

또한 ini 파일의 interactive_timeout 전역 변수를 낮추어야합니다.

또한 점에 유의 :

이 타임 아웃이되지 연결에 명명 된 파이프, 또는 공유 메모리를 사용했고, 단지 TCP/IP와 유닉스 소켓 파일 연결에 적용됩니다.

은 (블라디슬라프가 지적했듯이 위의 노트는 this bug has been fixed로, 무시해야하며, 시간 제한뿐만 아니라 명명 된 파이프 또는 공유 메모리 연결에 적용하지만, 분명히 문서가 업데이트되지 않았습니다.)

+2

빠른 답변 감사합니다. 트릭을 한 my.ini 파일에서 interactive_timeout 전역 변수를 수정했습니다. – Justin

+0

해당 시간 초과는 TCP에만 적용되고 Unix 도메인 소켓은 오래된 정보, 버그는 문서에 나와 있습니다. 이것은 2009 년에 수정되었습니다. (http://bugs.mysql.com/bug.php?id=31621) –

+0

@Vladislav : thnx, 나는 그것을 몰랐습니다. –