如何通过python连接时更改默认的Mysql连接超时?

我连接到一个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 | +----------------------------+----------+ 

我怎样才能改变默认超时?

做:

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

参数含义(取自导航器中的MySQL Workbench:实例>选项文件>选项卡“networking”>“超时设置”部分)

  • connect_timeout :mysqld服务器等待连接数据包的秒数,然后回复“Bad handshake”
  • interactive_timeout在closures交互式连接之前服务器等待活动的秒数
  • wait_timeout在closures连接之前服务器等待连接活动的秒数

顺便说一句:28800秒是8小时,所以对于10小时的执行时间,这些值应该实际上更高。

你在MySQLconfiguration文件(在mysqld部分选项connect_timeout )更改默认值 –

 [mysqld] connect_timeout=100 

如果这个文件不能被你访问,那么你可以使用这个语句来设置这个值 –

 SET GLOBAL connect_timeout=100; 

我知道这是一个古老的问题,但只是为了logging,这也可以通过将适当的连接选项作为parameter passing给_mysql.connect调用来完成。 例如,

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

注意使用关键字参数(主机,密码等)。 他们提高了你的代码的可读性。

有关可以传递给_mysql.connect不同参数的详细信息,请参阅MySQLdb API文档

打开phpmyadmin>设置>function,然后进入“logincookie有效性”默认为1440秒