Как я могу изменить тайм-аут соединения 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