【MYSQL數據庫異常處理】執行SQL語句報超時異常

MYSQL執行SQL語句異常:The last packet successfully received from the server was 100,107 milliseconds ago. The last packet sent successfully to the server was 100,101 milliseconds ago.

這個錯誤表明 MySQL 服務器與 JDBC 連接之間的通信超時了。通常由以下幾種情況引起:

錯誤原因

長時間沒有交互(MySQL 服務器關閉了空閑連接)

MySQL 服務器的 wait_timeout 或 interactive_timeout 設置較短,導致長時間未使用的連接被關閉。

SQL 查詢執行時間過長

如果查詢運行時間超過 JDBC 連接的 socketTimeout,MySQL 驅動程序會終止連接。

網絡問題

服務器端或客戶端的網絡連接中斷,導致 JDBC 連接失敗。

MySQL 服務器崩潰或重啟

服務器重啟后,原來的連接失效,導致客戶端報錯。

解決方案

? 方法 1:增加 MySQL wait_timeout 和 interactive_timeout

執行以下 SQL 命令,查看 MySQL 服務器的超時時間:

SHOW VARIABLES LIKE 'wait_timeout';
SHOW VARIABLES LIKE 'interactive_timeout';

如果值較小(例如 28800 秒以下),可以嘗試增加:

SET GLOBAL wait_timeout = 28800;
SET GLOBAL interactive_timeout = 28800;

?? 注意:此修改對現有連接無效,僅對新連接生效。如果需要持久生效,請修改 my.cnf 或 my.ini 配置:

[mysqld]
wait_timeout=28800
interactive_timeout=28800

然后重啟 MySQL 服務器。

? 方法 2:在 JDBC 連接 URL 中添加 autoReconnect=true&socketTimeout

修改 JDBC 連接 URL,設置自動重連和超時:

String url = "jdbc:mysql://localhost:3306/testdb?autoReconnect=true&socketTimeout=60000";
Connection conn = DriverManager.getConnection(url, user, password);

autoReconnect=true:當連接丟失時,自動重新連接(?? MySQL 8+ 已不推薦使用)。
socketTimeout=60000:設置 socket 超時時間為 60 秒,防止過早斷開。

? 方法 3:使用 keep-alive 保持連接

如果 MySQL 連接長時間空閑,MySQL 服務器可能會斷開連接。可以使用 HikariCP 或 Druid 連接池,每隔一段時間發送 ping 保持連接。

HikariCP 連接池配置
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/testdb");
config.setUsername("root");
config.setPassword("password");
config.setMaximumPoolSize(10);
config.setMinimumIdle(2);
config.setIdleTimeout(30000);  // 30 秒空閑超時
config.setKeepaliveTime(15000); // 每 15 秒發送 keep-alive
HikariDataSource dataSource = new HikariDataSource(config);

keepaliveTime=15000:每 15 秒發送一個 ping,防止連接超時。

Druid 連接池配置
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/testdb");
dataSource.setUsername("root");
dataSource.setPassword("password");
dataSource.setMinIdle(5);
dataSource.setMaxActive(10);
dataSource.setValidationQuery("SELECT 1");
dataSource.setTestWhileIdle(true);
dataSource.setTimeBetweenEvictionRunsMillis(30000); // 30 秒檢測一次

validationQuery=“SELECT 1”:連接池在連接空閑時,發送 SELECT 1 測試連接是否可用。

? 方法 4:檢查 MySQL 服務器狀態

如果服務器已經重啟或崩潰,嘗試重啟 MySQL:

sudo systemctl restart mysql  # Linux
net stop mysql && net start mysql  # Windows

總結

在這里插入圖片描述
還可以結合 連接池 + socketTimeout + keepalive 方式,來確保 JDBC 連接的穩定性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/71772.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/71772.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/71772.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HJ C++11 Day2

Initializer Lists 對于一個類P class P{P(int a, int b){cout << "P(int, int), a" << a << ", b " << b << endl;}P(initializer_list<int> initlist){cout << "P(initializer_list<int>), val…

樹莓派5首次開機保姆級教程(無顯示器通過VNC連接樹莓派桌面)

第一次開機詳細步驟 步驟一&#xff1a;樹莓派系統燒錄1 搜索打開燒錄軟件“Raspberry Pi Imager”2 選擇合適的設備、系統、SD卡3 燒錄配置選項 步驟二&#xff1a;SSH遠程樹莓派1 樹莓派插電2 網絡連接&#xff08;有線或無線&#xff09;3 確定樹莓派IP地址 步驟三&#xff…

裝飾器模式--RequestWrapper、請求流request無法被重復讀取

目錄 前言一、場景二、原因分析三、解決四、更多 前言 曾經遇見這么一段代碼&#xff0c;能看出來是把request又重新包裝了一下&#xff0c;核心信息都不會改變 后面了解到這叫 裝飾器模式&#xff08;Decorator Pattern&#xff09; &#xff1a;也稱為包裝模式(Wrapper Pat…

大語言模型進化論:從達爾文到AI的啟示與展望

文章大綱 引言大語言模型中的“進化論”思想體現遺傳變異過度繁殖和生存斗爭大模型“過度繁殖”與“生存競爭”機制解析**一、過度繁殖:技術迭代的指數級爆發****二、生存競爭:計算資源的達爾文戰場****三、生存競爭勝出關鍵要素****四、行業競爭格局演化趨勢**核心結論自然選…

監聽 RabbitMQ 延時交換機的消息數、OpenFeign 路徑參數傳入斜杠無法正確轉義

背景 【MQ】一套為海量消息和高并發熱點消息&#xff0c;提供高可用精準延時服務的解決方案 我現在有一個需求&#xff0c;就是監聽 RabbitMQ 一個延時交換機的消息數&#xff0c;而 RabbitTemplate 是不存在對應的方法來獲取的。 而我們在 RabbitMQ 的控制臺卻可以發現延時交…

分布式網絡

分布式網絡&#xff08;Distributed Network&#xff09;指的是一種計算機網絡架構&#xff0c;其中計算資源&#xff08;計算、存儲、數據處理等&#xff09;分布在多個物理或邏輯上的節點上&#xff0c;而不是集中在單一的服務器或數據中心中。這種架構的主要目標是提高系統的…

【Elasticsearch】Elasticsearch 中使用 HDFS 存儲快照

在 Elasticsearch 中使用 HDFS 存儲快照的步驟如下&#xff1a; 1.安裝 HDFS 插件 要使用 HDFS 存儲 Elasticsearch 的索引快照&#xff0c;需要在 Elasticsearch 集群的所有節點上安裝 HDFS 插件。 ? 在線安裝&#xff1a;適用于網絡環境良好的場景&#xff0c;執行以下命…

淺談 DeepSeek 對 DBA 的影響

引言&#xff1a; 在人工智能技術飛速發展的背景下&#xff0c;DeepSeek 作為一款基于混合專家模型&#xff08;MoE&#xff09;和強化學習技術的大語言模型&#xff0c;正在重塑傳統數據庫管理&#xff08;DBA&#xff09;的工作模式。通過結合其強大的自然語言處理能力、推理…

STM32F4 UDP組播通信:填一填ST官方HAL庫的坑

先說寫作本文的原因&#xff0c;由于開項目開發中需要用到UDP組播接收的功能&#xff0c;但是ST官方沒有提供合適的參考&#xff0c;使用STM32CubeMX生成的代碼也是不能直接使用的&#xff0c;而我在網上找了一大圈&#xff0c;也沒有一個能夠直接解決的方案&#xff0c;deepse…

leetcode日記(85)驗證二叉搜索樹

不難&#xff0c;有兩種解法&#xff08;看答案才想到中序遍歷&#xff09;。 我用的是普通遞歸&#xff0c;和上一題差不多&#xff0c;規定min和max&#xff0c;每次遍歷縮小范圍: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNod…

如何在rust中解析 windows 的 lnk文件(快捷方式)

一、從標題二開始看&#x1f601; 這些天在使用rust寫一個pc端應用程序&#xff0c;需要解析lnk文件獲取lnk的圖標以及原程序地址&#xff0c;之前并沒有過pc端應用程序開發的經驗&#xff0c; 所以在廣大的互聯網上游蕩了兩天。額&#x1f97a; 今天找到了這個庫 lnk_parse很…

啟動wsl里的Ubuntu24報錯:當前計算機配置不支持 WSL2,HCS_E_HYPERV_NOT_INSTALLED

問題&#xff1a;啟動wsl里的Ubuntu24報錯 報錯信息&#xff1a; 當前計算機配置不支持 WSL2。 請啟用“虛擬機平臺”可選組件&#xff0c;并確保在 BIOS 中啟用虛擬化。 通過運行以下命令啟用“虛擬機平臺”: wsl.exe --install --no-distribution 有關信息&#xff0c;請訪…

Python使用FastAPI結合Word2vec來向量化200維的語言向量數值

準備 pip install fastapi>0.68.0 pip install uvicorn[standard]>0.15.0 pip install gensim>4.0.0 pip install jieba>0.42.1 pip install numpy>1.21.0 pip install scikit-learn>1.0.0少了的就直接補充就好 代碼 from fastapi import FastAPI, HTTPExc…

ControlNet

文章目錄 摘要abstract1.ControlNet1.1 原文摘要1.2 模型架構1.3 架構細節1.4 訓練損失函數1.5 實驗1.6 結論 2.總結參考文獻 摘要 本周學習的ControlNet 是一種用于文本到圖像擴散模型&#xff08;如 Stable Diffusion&#xff09;的條件控制方法。它通過凍結預訓練的擴散模型…

Visual-RFT視覺強化微調:用「試錯學習」教會AI看圖說話

&#x1f4dc; 文獻卡 英文題目: Visual-RFT: Visual Reinforcement Fine-Tuning;作者: Ziyu Liu; Zeyi Sun; Yuhang Zang; Xiaoyi Dong; Yuhang Cao; Haodong Duan; Dahua Lin; Jiaqi WangDOI: 10.48550/arXiv.2503.01785摘要翻譯: 像OpenAI o1這樣的大型推理模型中的強化微調…

Hadoop管理頁看不到任務的問題

這個yarn分配任務了但是為空 在$HADOOP_HOME/conf/mapred-site.xml 原來的配置文件基礎之上添加&#xff1a; <property><name>mapreduce.framework.name</name><value>yarn</value></property> 重啟之后就好了

傅里葉變換:跨越時空的數學魔法

引言&#xff1a;從振動到信息——傅里葉的智慧 傅里葉變換&#xff08;Fourier Transform&#xff09;是數學與工程領域最具影響力的工具之一。它的核心思想是將復雜的信號分解為簡單的正弦波和余弦波的疊加&#xff0c;從而揭示隱藏在數據背后的頻率信息。自19世紀法國數學家…

DR和BDR的選舉規則

在 OSPF&#xff08;開放最短路徑優先&#xff09;協議中&#xff0c;DR&#xff08;Designated Router&#xff0c;指定路由器&#xff09; 和 BDR&#xff08;Backup Designated Router&#xff0c;備份指定路由器&#xff09; 的選舉是為了在廣播型網絡&#xff08;如以太網…

【linux網絡編程】套接字編程API詳細介紹

在C語言中&#xff0c;套接字&#xff08;Socket&#xff09;編程主要用于網絡通信&#xff0c;尤其是在基于TCP/IP協議的應用程序開發中。常用的套接字編程API主要基于Berkeley Sockets&#xff08;伯克利套接字&#xff09;接口&#xff0c;這些函數通常在<sys/socket.h&g…

Linux和gcc/g++常用命令總結

目錄 Linux命令總結 文件操作相關命令 ls cd pwd cp mv rm cat mkdir rmdir touch 文本處理操作命令 grep awk sed 進程管理操作相關命令 ps top htop kill pkill killall chmod chown 網絡操作相關命令 ping ifconfig netstat ss lsof curl …