libpqxx:如何在连接过程死后重新连接到Postgresql数据库

我通过libpqxx实例化一个PostgreSQL连接。 我查询数据库,并得到正确的答复。 之后,我尝试了下面的错误情况:创build了pqxx :: connection实例之后,我暂停了我的程序,手动从Linux的命令行程序中终止了Postgre的连接过程并恢复程序。 它继续下去,直到它试图创build新的事务pqxx :: work,它抛出pqxx :: broken_connection。 我处理这个exception,并尝试重新连接到pqxx :: connection :: activate()的调用,但另一个pqxx :: broken_connection被抛出。 如何重新连接到数据库而不实例化另一个pqxx ::连接?

PS重新激活不被禁止。 我使用标准的连接types –

namespace pqxx { typedef basic_connection<connect_direct> connection; } 

好的,没有人回答。 我注意到,在我连续几次调用pqxx :: connection :: activate后,手动终止连接后的进程后,它重新连接,所以这是我的解决方法。

 class dbconnection : public pqxx::connection { public: dbconnection(std::string options) : pqxx::connection(options) { }; void reconnect() { static int times = 0; try { times++; if(!this->is_open()) { this->activate(); } times = 0; } catch(const pqxx::broken_connection & e) { if(times > 10) { times = 0; return; } this->reconnect(); } }; }; 

每次在我捕获一个pqxx :: broken_connection后,我都会调用dbconnection :: reconnect。 让我知道你有更好的解决方案吗?