파이썬을 통해 연결할 때 기본 MySQL 연결 시간 초과를 어떻게 변경할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/14726789

  •  07-03-2022
  •  | 
  •  

문제

파이썬을 사용하여 MySQL 데이터베이스에 연결했습니다 con = _mysql.connect('localhost', 'dell-pc', '', 'test')내가 쓴 프로그램은 전체 실행 즉 약 10 시간 동안 많은 시간을 필요로합니다. 사실, 나는 코퍼스에서 뚜렷한 단어를 읽으려고 노력하고 있습니다. 독서가 끝나면 시간 초과 오류가 발생했습니다.

나는 다음과 같은 MySQL 기본 시간 초과를 선택했습니다.

+----------------------------+----------+
| Variable_name              | Value    |
+----------------------------+----------+
| connect_timeout            | 10       |
| delayed_insert_timeout     | 300      |
| innodb_lock_wait_timeout   | 50       |
| innodb_rollback_on_timeout | OFF      |
| interactive_timeout        | 28800    |
| lock_wait_timeout          | 31536000 |
| net_read_timeout           | 30       |
| net_write_timeout          | 60       |
| slave_net_timeout          | 3600     |
| wait_timeout               | 28800    |
+----------------------------+----------+

기본 시간 초과를 어떻게 변경할 수 있습니까?

도움이 되었습니까?

해결책

하다:

con.query('SET GLOBAL connect_timeout=28800')
con.query('SET GLOBAL interactive_timeout=28800')
con.query('SET GLOBAL wait_timeout=28800')

매개 변수 의미 (Navigator의 MySQL Workbench에서 가져온 : 인스턴스> 옵션 파일> 탭 "네트워킹"> "시간 초과 설정")

  • connect_timeout.: mysqld 서버가 '나쁜 핸드 셰이크'로 응답하기 전에 Connect 패킷을 대기하는 시간 (초)
  • Interactive_timeout. 서버가 닫기 전에 대화식 연결에서 활동을 대기하는 시간 (초)
  • wait_timeout. 서버가 연결하기 전에 서버가 활동을 기다리는 시간 (초)

BTW : 28800 초는 8 시간이므로 10 시간 실행 시간 동안 이러한 값은 실제로 높아야합니다.

다른 팁

MySQL 구성 파일에서 기본값을 변경합니다 (옵션 connect_timeout. 입력 mysqld. 부분) -

[mysqld]
connect_timeout=100

이 파일에 액세스 할 수없는 경우이 값을 사용 하여이 값을 설정할 수 있습니다.

SET GLOBAL connect_timeout=100;

나는 이것이 오래된 질문이라는 것을 알고 있지만, 기록을위한 것이 적절한 연결 옵션을 _mysql.connect 전화. 예를 들어,

con = _mysql.connect(host='localhost', user='dell-pc', passwd='', db='test',
          connect_timeout=1000)

키워드 매개 변수 (호스트, passwd 등)의 사용을 주목하십시오. 그들은 코드의 가독성을 향상시킵니다.

당신이 통과 할 수있는 다른 인수에 대해 자세히 _mysql.connect, 보다 mysqldb API 문서

max_execution_time은 MySQL 5.7 이상에서 작동하는 장기 실행 쿼리에 대한 중요한 매개 변수입니다.

현재 값을 확인하십시오

SELECT @@GLOBAL.MAX_EXECUTION_TIME, @@SESSION.MAX_EXECUTION_TIME;

그런 다음 필요에 따라 설정하십시오.

SET SESSION MAX_EXECUTION_TIME=2000;
SET GLOBAL MAX_EXECUTION_TIME=2000;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top