我在单例程序包中使用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.一种简单的方法是: connect to DB ==> Issue query ==> Close connection。这是我在使用DBI时通常使用的方法。
在我的例子中,问题是我无法找到使用AnyEvent::DBI重新连接到数据库的方法,除非创建一个新的AnyEvent::DBI实例( new )。
任何建议都是很棒的!
发布于 2012-12-05 23:45:03
根据CPAN上的DBD::mysql文档,您需要使用:
$dbh->{mysql_auto_reconnect} = 1;以下是指向该参考的链接:
http://metacpan.org/pod/DBD::mysql
发布于 2011-10-07 20:24:15
在MySQL中,有一个wait_timeout变量用于设置非交互式连接的持续时间。
对于长时间运行的连接,您可以尝试将该值(默认值= 28800 )更改为更合适的值。
可以通过一个简单的查询来更新wait_timeout值
mysql> SET SESSION wait_timeout = 50000;并与另一个一起检索
mysql> SHOW VARIABLES LIKE 'wait_timeout';https://stackoverflow.com/questions/7686455
复制相似问题