我使用AnyEvent :: DBI在一个单封装,当有数据库中没有活动/查询等几个小时后,我得到这个错误,而试图发出一个查询: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.
一个简单的方法是:连接到数据库==>问题查询==>关闭连接。 这种方式是我在使用DBI时通常使用的方式。
这个问题在我的情况是,我不能找到一种方法来重新连接到使用AnyEvent :: DBI数据库,除了从创建一个新的AnyEvent :: DBI实例(新的)。
任何建议将是伟大的!
因为我不知道该数据库将有多少时间是处于非活动状态,我真的不能知道多少秒设置WAIT_TIMEOUT,所以我想,连接和重新连接到数据库是一个解决方案更好 – snoofkin
@ soulSurfer2010数据库连接价格昂贵;你是否已经尝试将'execute()'代码包装在'eval {}'块中(带有选项'RaiseError => 1')?在execute()之后检查'$ @'可能会提供重新连接的机会。 –
问题是,我不知道如何在AnyEvent :: DBI中重新连接。如果我直接使用DBI,那么现在我可能已经想出了一个。 – snoofkin