首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

JDBC 常見 12 種錯誤訊息對照表與快速除錯指南(MySQL 為例)

     編輯:Java 程式設計入門

通用異常處理範本

try {
    // JDBC 操作
} catch (Exception e) {
    System.err.println("錯誤類別:" + e.getClass().getName());
    System.err.println("錯誤訊息:" + e.getMessage());
    e.printStackTrace(); // 開發期建議印完整堆疊
}

12 種高頻錯誤對照表

#錯誤訊息關鍵字原因解決方案
1ClassNotFoundException: com.mysql.jdbc.Driver驅動類別找不到檢查驅動 JAR 是否在 Classpath;Maven/Gradle 依賴是否正確
2SQLException: No suitable driverJDBC URL 格式錯誤核對 URL 格式:jdbc:mysql://host:port/dbname?params
3Communications link failure ... Connection timed outIP 錯誤/網路不通/防火牆阻擋ping 測試 IP;telnet port 3306;檢查安全群組/防火牆
4Communications link failure ... Connection refusedPort 錯誤/MySQL 服務未啟動確認 my.cnf port 設定;systemctl status mysqld
5SQLException: Unknown database 'xxx'資料庫不存在建立資料庫或修正 URL 中 DatabaseName
6Access denied for user 'xxx'@'host'帳號/密碼錯誤/主機權限不足確認帳密;GRANT ALL ON db.* TO 'user'@'%' IDENTIFIED BY 'pwd'; FLUSH PRIVILEGES;
7Table 'db.table' doesn't exist表名拼寫錯誤/大小寫敏感Linux 下表名區分大小寫;用 SHOW TABLES 核對
8Unknown column 'xxx' in 'field list'欄位名錯誤DESC table 核對欄位名
9Column Index out of range, 4 > 3ResultSet 索引超界(1-based)檢查 rs.getString(4) 是否超過實際欄數;迴圈用 getMetaData().getColumnCount()
10Column count doesn't match value count at row 1INSERT 個數與表欄位數不符明確列出欄位:INSERT INTO t(a,b,c) VALUES(?,?,?)
11Duplicate entry 'xxx' for key 'PRIMARY'主鍵/唯一鍵重複檢查業務邏輯避免重複插入;用 INSERT IGNORE / ON DUPLICATE KEY UPDATE
12Data too long for column 'xxx' at row 1資料長度超過欄位定義調整欄位長度 ALTER TABLE t MODIFY col VARCHAR(255) 或截斷資料

進階除錯技巧

  1. 開啟 MySQL 一般查詢日誌:SET GLOBAL general_log=1; 觀察實際執行 SQL。
  2. 使用 p6spy / datasource-proxy:自動記錄參數綁定後的完整 SQL。
  3. 連線池驗證查詢:validationQuery=SELECT 1 防止斷連。
  4. 時區設定:URL 加 serverTimezone=Asia/Taipei 避免時間偏移。
  5. SSL/加密:useSSL=false(開發環境)或配置憑證。

總結

對照錯誤關鍵字 → 定位層面(驅動、網路、認證、SQL、Schema、資料) → 針對性修復。養成印出完整堆疊、記錄實際 SQL習慣,除錯效率提升 80%。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved