我在单件包中使用AnyEvent :: DBI,并且在数小时后数据库/查询等中没有活动时,我在尝试发出查询时遇到此错误:
DBD::mysql::st execute failed: MySQL server has gone away at /usr/local/share/perl/5.10.1/AnyEvent/DBI.pm line 98.
一种简单的方法是:连接到DB ==>问题查询==>关闭连接。 这种方式是我在使用DBI时通常使用的方式。
我的问题是我无法找到使用AnyEvent :: DBI重新连接数据库的方法,除了创建一个新的AnyEvent :: DBI实例(新)。
任何建议都会很棒!
答案 0 :(得分:2)
根据CPAN上的DBD :: mysql文档,您要使用:
$dbh->{mysql_auto_reconnect} = 1;
以下是参考资料的链接:
答案 1 :(得分:1)
在MySQL中有一个wait_timeout
变量,用于设置非交互式连接的持续时间。
对于长时间运行的连接,您可以尝试将该值(默认值= 28800)更改为更合适的值。
可以使用简单查询更新 wait_timeout
值
mysql> SET SESSION wait_timeout = 50000;
并使用另一个
检索mysql> SHOW VARIABLES LIKE 'wait_timeout';