通过 python 连接时,如何更改默认的 Mysql 连接超时?
- 2025-02-25 09:07:00
- admin 原创
- 19
问题描述:
我使用 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 |
+----------------------------+----------+
我如何更改默认超时?
解决方案 1:
做:
con.query('SET GLOBAL connect_timeout=28800')
con.query('SET GLOBAL interactive_timeout=28800')
con.query('SET GLOBAL wait_timeout=28800')
参数含义(取自 MySQL Workbench 中的 Navigator:实例 > 选项文件 > “网络”选项卡 > “超时设置”部分)
connect_timeout:mysqld 服务器在响应“握手失败”之前等待连接数据包的秒数
interactive_timeout服务器在关闭交互式连接之前等待活动的秒数
wait_timeout服务器在关闭连接之前等待连接活动的秒数
顺便说一句:28800 秒是 8 小时,因此对于 10 小时的执行时间,这些值实际上应该更高。
解决方案 2:
您在 MySQL 配置文件中更改默认值(mysqld部分中的connect_timeout选项)-
[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;
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD