libpqxx:如何在连接进程终止后重新连接到Postgresql数据库
libpqxx: How to reconnect to a Postgresql database after connection process has died
我通过libpqxx实例化PostgreSQL连接。我查询了数据库并得到了正确的响应。在那之后,我尝试了以下错误情况:在创建了pqxx::connection实例后,我暂停了我的程序,从Linux的命令shell手动终止Postgre的连接进程,然后恢复程序。它一直持续到尝试创建新的事务pqxx::work,并抛出pqxx::broken_connection。我处理了这个异常,并尝试通过调用pqxx::connection::activate()重新连接,但另一个pqxx::broken_connection被抛出。如何在不实例化另一个pqxx::连接的情况下重新连接到DB?
p.S.再激活不受抑制。我使用标准连接类型-
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。让我知道你有更好的解决方案吗?
相关文章:
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- QTcpSocket 在 RemoteHostClosedError 后重新连接到服务器时无法传输数据
- 使用 ssh 重新连接到远程 Ubuntu 机器后,如何继续使用 gdb 调试 c++ 代码?
- 客户端 gRPC 连接,C++重新连接?
- 以编程方式重新连接断开的 VHD 链
- 断开连接后重新连接boost beast(asio)websocket和http连接时出错
- boost1.62 在 docker 容器中重新连接后套接字损坏
- 尝试重新连接到服务器时获取错误提升 asio 连接超时
- 将现有套接字重新连接到新服务器所需的最少工作量是多少
- OPENCV如何重新连接中间具有空白或曲率的线路
- 从开箱即用的应用程序连接PostgreSQL的简便方法?(嵌入PostgreSQL)
- 我可以在不重新连接的情况下多次使用BIO_puts、BIO_read吗
- QTcpSocket客户端自动重新连接
- QTcpSocket重新连接方式
- Winsock-正在将客户端重新连接到服务器-10061
- OpenCV VideoCapture IP摄像机重新连接
- 无法重新连接boost asio套接字客户端
- Mysql c++连接器,如何保持连接存活和重新连接,如果连接断开
- 套接字将在一段时间后死亡而不能重新连接
- 服务器关闭后TCP/IP客户端重新连接