Java에서 데이터베이스에 연결할 때 'No suitable driver found for jdbc:mysql://localhost:3306/test'와 같은 java.sql.SQLException 예외가 발생하는 경우가 있습니다. 이 오류는 로드된 JDBC 드라이버 중 어느 것도 acceptsURL() 메서드를 통해 현재 사용하려는 JDBC URL을 인식하지 못할 때 발생합니다. 가장 흔한 원인은 MySQL JDBC 드라이버가 클래스패스에 포함되지 않았거나, JDBC URL 형식이 올바르지 않은 경우입니다.
원인과 해결 방법
이 문제를 해결하려면 프로젝트에 MySQL Connector/J(JDBC 드라이버)를 추가하고, 아래와 같은 올바른 MySQL JDBC URL을 사용해야 합니다.
jdbc:mysql://localhost:3306/test?useSSL=false
acceptsURL() 메서드란?
JDBC 드라이버의 acceptsURL() 메서드는 해당 드라이버가 주어진 데이터베이스 URL을 이해할 수 있는지 판단하는 역할을 합니다. 메서드 원형은 다음과 같습니다.
boolean acceptsURL(String url) throws SQLException
이 메서드는 String 타입의 데이터베이스 URL을 매개변수로 받으며, 드라이버가 해당 URL을 처리할 수 있으면 true, 그렇지 않으면 false를 반환합니다. 모든 드라이버가 false를 반환하면 DriverManager는 적합한 드라이버를 찾지 못했다는 의미로 위 예외를 던지게 됩니다.
올바른 데이터베이스 연결 문법
전체 데이터베이스 연결 코드는 다음과 같은 형식으로 작성합니다.
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/yourDatabaseName?useSSL=false",
"yourUserName",
"yourPassword"
);예제 코드
다음은 MySQL 데이터베이스에 정상적으로 연결하는 Java 예제입니다.
import java.sql.Connection;
import java.sql.DriverManager;
public class AvoidSQLException {
public static void main(String[] args) {
Connection con = null;
try {
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/sample?useSSL=false",
"root",
"123456"
);
System.out.println("Connection is successful !!!!!");
} catch (Exception e) {
e.printStackTrace();
}
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
Connection is successful !!!!!
추가 확인 사항
그래도 동일한 오류가 발생한다면 다음 항목들을 점검해 보세요.
- 드라이버 의존성 확인: Maven 프로젝트라면 mysql-connector-j 의존성이 pom.xml에 추가되어 있는지 확인합니다.
- 클래스패스 등록: 일반 Java 프로젝트라면 MySQL Connector/J JAR 파일이 빌드 경로에 포함되어 있는지 확인합니다.
- JDBC URL 오타 검사: jdbc:mysql:// 접두사가 정확히 입력되었는지, 포트 번호(기본값 3306)와 데이터베이스 이름이 올바른지 확인합니다.
- 드라이버 명시적 로딩: 구버전 환경이라면 연결 전에 Class.forName("com.mysql.cj.jdbc.Driver")를 호출하여 드라이버를 명시적으로 로드할 수도 있습니다.
이처럼 올바른 JDBC 드라이버를 준비하고 정확한 URL 형식을 사용하면 '적합한 드라이버를 찾을 수 없습니다' 오류를 손쉽게 해결할 수 있습니다.