我使用python连接到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服务器在响应“坏握手”之前等待连接数据包的秒数
  • interactive_timeout. 在关闭之前,服务器在交互式连接上等待活动的秒数
  • waite_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也是长时间运行查询的重要参数.WILL为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