首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MyEclipse 連接數據庫失敗:中文冒號、防火牆、網段不通三大常見原因排查

     編輯:程式設計疑難解答

錯誤現象

javax.servlet.ServletException: org.springframework.transaction.CannotCreateTransactionException: 
Could not open Hibernate Session for transaction; 
nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open connection

Root Cause: org.springframework.transaction.CannotCreateTransactionException: 
Could not open Hibernate Session for transaction; 
nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open connection

三大核心排查方向

1. JDBC URL 中文冒號(極高概率)


jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8


jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8

**檢查方法**:複製 URL 到純文本編輯器(如 Notepad++),開啟「顯示所有字符」,冒號應顯示為 `:` 而非 `:`。

2. 數據庫服務器防火牆/安全組

  • **Windows 防火牆**:入站規則允許 3306 (MySQL) / 1433 (SQL Server) / 1521 (Oracle)
  • **雲服務器安全組**:阿里云/騰訊云/華為云控制台 → 安全組 → 入站規則放行對應端口
  • **數據庫自身權限**:GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES;(注意 `@'%'` 允許遠程訪問)

3. 網段不通/內網穿透

快速驗證步驟

  1. Telnet 測試端口通達性:telnet 3306(Windows 需啟用 Telnet 客戶端)
  2. 命令行客戶端測試:mysql -h -u user -p
  3. 檢查 hibernate.cfg.xml:URL、用戶名、密碼、驅動類名
  4. 對比機房環境:導出機房正確配置文件,僅修改 IP/密碼後對比

配置文件檢查清單

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://192.168.1.100:3306/mydb?useSSL=false&serverTimezone=UTC</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">password</property>
<!-- 連接池基礎配置 -->
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.c3p0.max_statements">50</property>

總結

  1. 🥇 **第一檢查**:JDBC URL 冒號是否為半角英文
  2. 🥈 **第二檢查**:服務器防火牆/安全組/數據庫遠程權限
  3. 🥉 **第三檢查**:網絡互通性、bind-address、Docker 端口映射
  4. 💡 **調試原則**:先用命令行客戶端直連,通了再排查框架配置
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
場景現象解決
機房電脑能連,自己電腦不能機房在內網,自己在外網/不同VLANVPN/內網穿透/跳板機/映射端口
本地回環正常,IP不通bind-address=127.0.0.1my.cnf 設置 bind-address=0.0.0.0 並重啟
Docker 容器數據庫宿主機 IP 無法訪問容器端口docker run -p 3306:3306 或 host 網絡模式