Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

делать:

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

Значение параметра (взято из MySQL Workbench в Navigator: Экземпляp > Файл параметров > Вкладка "Сеть" > Раздел "Настройки таймаута" )

  • connect_timeout: количество секунд, в течение которых сервер mysqld ожидает пакет подключения, прежде чем отвечать "плохое рукопожатие"
  • interactive_timeout. Количество секунд, в течение которых сервер ожидает активности в интерактивном соединении перед его закрытием.
  • wait_timeout. Количество секунд, в течение которых сервер ждет активности в соединении перед его закрытием.

BTW: 28800 секунд - 8 часов, поэтому в течение 10-часового времени выполнения эти значения должны быть на самом деле выше.

Ответ 2

Вы изменяете значение по умолчанию в файле конфигурации MySQL (опция connect_timeout в разделе mysqld) -

[mysqld]
connect_timeout=100

Если этот файл недоступен для вас, вы можете установить это значение с помощью этого оператора -

SET GLOBAL connect_timeout=100;

Ответ 3

Я знаю, что это старый вопрос, но для справки это также можно сделать, передав соответствующие параметры соединения в качестве аргументов в вызов _mysql.connect. Например,

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

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

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

Ответ 4

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;

Ответ 5

открыть phpmyadmin > настройкa > Функция затем нажимает "Действительность файла cookie для входа" по умолчанию на 1440 секунд