Đây là một ngoại lệ được bao bọc và không thực sự thú vị. Đó là nguyên nhân gốc rễ ngoại lệ thực sự cho chúng ta biết điều gì đó về nguyên nhân gốc rễ. Vui lòng nhìn xa hơn một chút trong stacktrace. Rất có thể sau đó bạn sẽ gặp phải SQLException: Connection refused
hoặc SQLException: Connection timed out
.
Nếu điều này cũng đúng trong trường hợp của bạn, thì tất cả các nguyên nhân có thể là:
- Địa chỉ IP hoặc tên máy chủ trong URL JDBC không chính xác.
- Tên máy chủ trong URL JDBC không được máy chủ DNS cục bộ nhận dạng.
- Số cổng bị thiếu hoặc sai trong URL JDBC.
- Máy chủ DB không hoạt động.
- Máy chủ DB không chấp nhận kết nối TCP / IP.
- Một cái gì đó giữa Java và DB đang chặn các kết nối, ví dụ:tường lửa hoặc proxy.
Để giải quyết một trong hai, hãy làm theo lời khuyên sau:
- Xác minh và kiểm tra chúng bằng
ping
. - Làm mới DNS hoặc sử dụng địa chỉ IP trong URL JDBC.
- Xác minh nó dựa trên
my.cnf
của MySQL DB. - Bắt đầu nó.
- Xác minh xem mysqld có được khởi động mà không có
--skip-networking
hay không tùy chọn. - Tắt tường lửa và / hoặc định cấu hình tường lửa / proxy để cho phép / chuyển tiếp cổng.
Nhân tiện (và không liên quan đến vấn đề thực tế), bạn không nhất thiết phải tải trình điều khiển JDBC trên mọi getConnection()
gọi điện. Chỉ một lần trong khi khởi động là đủ.