1. 程式人生 > >關於c++連線mysql產生8小時連線失效的問題

關於c++連線mysql產生8小時連線失效的問題

    雖然8小時連線失效可以通過設定mysql來解決,出於嚴謹的態度,嘗試在程式碼上優化,優化的時候發現檢查連線的方法有點問題,沒能檢查到8小時連線已失效,後來通過捕捉異常來重新建立新的連線池

sql::Connection * CSqlConnPool::GetReadConnection(const std::string& DBName){
	sql::Connection * conn = NULL;
	boost::unique_lock<boost::mutex> lock(mutex_);
	if(!queue_conn_read.empty()){
		conn = queue_conn_read.front();
		queue_conn_read.pop_front();
	}
	if(conn){
		try
		{
			conn->setSchema(DBName);
		}
		catch (...)
		{
			/*如果使用conn->isclosed() 是無法判斷8小時連線失效的,但是可以根據丟擲異常來捕捉失效的訊號 並重新建立資料庫連線池*/
			conn->close();
			delete conn;
			conn = this->CreateReadConnection();
			conn->setSchema(DBName);
			LOG4CXX_INFO(g_logger, "Rebuild conn worked!");
		}
	}
	if (conn == NULL){
		conn = this->CreateReadConnection();
		if(conn != NULL){
			conn->setSchema(DBName);
		}
	}

	return conn;
}


相關推薦

關於c++連線mysql產生8小時連線失效的問題

    雖然8小時連線失效可以通過設定mysql來解決,出於嚴謹的態度,嘗試在程式碼上優化,優化的時候發現檢查連線的方法有點問題,沒能檢查到8小時連線已失效,後來通過捕捉異常來重新建立新的連線池 sql::Connection * CSqlConnPool::GetRead

mysql預設8小時連線斷開機制解決

轉載連線:http://www.myexception.cn/database/1639209.html   本文提供了對c3p0與DBCP連線池連線MySql資料庫時, 8小時內無請求自動斷開連線的解決方案。首先介紹一下我在專案(c3p0連線池)中遇到的問題,後面還提供了使用DBCP連線池的解

spring boot mysql 8小時連線超時

使用springboot 執行緒池連線MySQL時,mysql資料庫wait_timeout 為8個小時,所以程式第二天發現報錯,在url配置了 autoReconnect=true 也不行,正確配置以下 #驗證連線的有效性 spring.datasource.tes

ERROR:java連線mysql資料庫8.0以上版本

先上解決辦法: 1、修改jdbc.properties    原來是: jdbc.url=jdbc:mysql://localhost:3306/language_protection?useUnicode=true&characterEncoding=UTF

Java連線MySQL資料庫8.0以上版本遇到的坑(The new driver class is `com.mysql.cj.jdbc.Driver)

我遇到了java無法連線mysql資料庫8.0.1的問題。         報錯:Loading class `com.mysql.jdbc.Driver'. This is deprecated.

關於MySQL版本8資料庫連線語句

mysql資料庫連線語句發生變化 MySQL資料庫8.0版本以上,資料庫的連線語句已經發生變化,Class.forName("com.mysql.jdbc.Driver");變為Class.forName("com.mysql.cj.jdbc.Driver");com.my

MySQL解決8小時內沒有進行數據庫操作, mysql自動斷開連接, 需要重啟tomcat的問題

數據 style 斷開連接 pan family 行數 需要 -s 重啟tomcat 在my.cnf中加入: [mysqld] wait_timeout=604800 interactive_timeout=604800 設置為7天MySQL解決8小時內沒有進行數據庫操

mysql預設8小時超時設定的修改

兩種解決辦法:1,設定定時器,每隔幾個小時請求一次資料庫,如果使用框架的話可以開啟相應設定。2,修改mysql的預設超時時間。這裡介紹第二種方法簡單記錄下,有兩種途徑來設定mysql的超時時間第一種途徑使用命令列set @@GLOBAL.wait_timeout=181440

golang連線mysql操作及動態連線池設定

golang本身沒有提供連線mysql的驅動,但是定義了標準介面供第三方開發驅動。這裡連線mysql可以使用第三方庫,第三方庫推薦使用https://github.com/Go-SQL-Driver/MySQL這個驅動,更新維護都比較好。下面演示下具體的使用,完

mysql 同時支援多少連線MYSQL 檢視最大連線數和修改最大連線

MySQL檢視最大連線數和修改最大連線數 1、檢視最大連線數 show variables like '%max_connections%'; 2、修改最大連線數 set GLOBAL max_connections = 200;   以下的文章主要是向大家介紹的是M

解決mysql預設的8小時自動斷開連線

語言:javaEE 框架:spring mvc+spring+mybatis 資料庫:mysql8 WEB伺服器:tomcat8 背景:   在試運營階段發現發生“連線超時”異常 丟擲異常:   Cause: com.mysql.jdbc.exceptions.jdbc4.Communicati

解決mysql到了8小時斷開連線問題

我的是SpringBoot專案,將服務放到雲伺服器後發現了一個問題,就是服務如果8小時沒有收到請求就會欄位斷開連線,當再次訪問時就會爆出連線異常,在網上找了相關資料,在此記錄解決方案。 1、如果是mysql4以下,則只需要在datasource的url後加上autoReco

MySqlDBCP連線8小時失效解決方案

<bean id="readDS" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">         <property name="driverClassName" value="${slave

使用c3p0與DBCP連線池,造成的MySql 8小時問題解決方案

本文提供了對c3p0與DBCP連線池連線MySQL資料庫時, 8小時內無請求自動斷開連線的解決方案。首先介紹一下我在專案(c3p0連線池)中遇到的問題,後面還提供了使用DBCP連線池的解決方案。 基本問題解決 專案環境: Java Web專案框架為spring 

解決MySQL每隔8小時自動斷開連線的問題

方法一: 1.開啟mysql的安裝目錄找到配置wenjian【my.ini】 新增 interactive_timeout=28800000 wait_timeout=28800000 在資料庫

MySql 8小時解決方案:proxool連線

最近做的專案用的mysql資料庫,前天掛在伺服器上,昨天早晨上班一來,同事就說API資料介面訪問不了了,我馬上mstsc登陸伺服器看,報錯了。馬上重啟tomcat,結果還能正常執行,當時沒管,今天過來又出現相同的問題,錯誤程式碼網上一查,原來是MySql8小時的問題。 M

python django建立資料庫表並連線mysql資料庫(附mysql 8.0.12安裝)

先寫下mysql zip安裝方式,在環境變數中加入mysql/bin路徑,把zip解壓到C:\program files下,在最外層資料夾建立my-default.ini 寫入內容: [mysqld]  basedir=C:\Program Files\MySQL data

vs2013下c++連線mysql資料庫

 本文使用的是mysql提供的api來進行連線,這樣使用比較方便。 開發環境:mysql 5.6+vs2013+win8.1作業系統 步驟1: 要使用mysql的api,需要mysql安裝目錄下include 和 lib 兩個資料夾的東西,如果你用的是wamp或者php

C++ ODBC方式連線MySQL(終極詳細)

因為我自己弄了好久,我不想讓別人也弄這麼久 1.電腦安裝mysql(shell版的和Install的都行,我的shell,64位) 2.配置設定(首先找到MySQL的路徑,我是手動存放在 C:\Program Files\MySQL)然後你會發現目錄下有兩個資料夾 include和lib

VS2017連線MYSQL 8.0(小白必看!)

首先用到的工具是: 安裝過程自行操作!!! 最下面有帶註釋的詳細測試原始碼和效果圖; 對接步驟1: 右鍵單擊專案名稱,選擇屬性 對接步驟2: 專案名->屬性->c/c+±>常規->附加包含目錄 新增路徑:C:\\Program F