Как я могу изменить тайм-аут соединения Mysql по умолчанию при подключении через python?

я подключился к базе данных mysql с помощью python 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    |
+----------------------------+----------+

Как изменить тайм-аут по умолчанию ?

3 ответов


Do:

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

значение параметра (взято из MySQL Workbench в навигаторе: экземпляр > файл параметров > вкладка "сеть" > раздел "Настройки таймаута")

  • connect_timeout: количество секунд сервер mysqld ждет пакета подключения, прежде чем ответить с "плохим рукопожатием"
  • 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)

обратите внимание на использование параметров ключевых слов (host, passwd и т. д.). Они улучшают читаемость кода.

подробнее о различных аргументах, которые вы можете передать в _mysql.connect см. документация по API MySQLdb