JDBC 연결 오류

경쓱타드·2024년 5월 28일
0

에러

목록 보기
2/7

에러 상황

  • DB 연결을 위해 Connection 객체를 생성하는 과정에 문제 발생
"C:\Program Files\Java\jdk-11.0.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2023.2\lib\idea_rt.jar=53084:C:\Program Files\JetBrains\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\sinar\Desktop\슈퍼코딩\java_task\out\production\java_task;C:\Users\sinar\.gradle\caches\modules-2\files-2.1\org.jasypt\jasypt\1.9.3\d99ef9540f51c617f2a293b460f025d2ee563dd\jasypt-1.9.3.jar practice.day20240524.JdbcTest
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/chapter_80
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:702)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
	at practice.day20240524.JdbcTest.main(JdbcTest.java:24)

Process finished with exit code 0
  • 코드
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JdbcTest {
    // Connection 얻기 위한 접근 정보
    private final static String DB_URL = "jdbc:mysql://localhost:3306/chapter_80";
    private final static String DB_USER = "root";
    private final static String DB_PASSWORD = System.getenv("DB_PW");

    public static void main(String[] args) {
        try(Connection connection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); // Connection 얻기
                    Statement statement = connection.createStatement(); // Statement 얻기
        ) {
            // Statement 생성

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • build.gradle
dependencies {
    testImplementation platform('org.junit:junit-bom:5.9.1')
    testImplementation 'org.junit.jupiter:junit-jupiter'
    implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5'

    // jdbc
    implementation 'mysql:mysql-connector-java:8.0.27'
}

Connection 객체 자체에 값을 넣음

  • 먼저 환경변수를 읽지 못할까봐 connection 객체 생성 시 string값 자체를 넣음
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JdbcTest {
    // Connection 얻기 위한 접근 정보
    private final static String DB_URL = "jdbc:mysql://localhost:3306/chapter_80";
    private final static String DB_USER = "root";
    private final static String DB_PASSWORD = System.getenv("DB_PW");

    public static void main(String[] args) {
        try(Connection connection = DriverManager.getConnection(
        		"jdbc:mysql://localhost:3306/chapter_80",
                "root",
                "sinariari"); // Connection 얻기
                    Statement statement = connection.createStatement(); // Statement 얻기
        ) {
            // Statement 생성

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • 환경변수를 읽지 못하는 상황은 아님

인텔리제이에 DB 연결

  • 인텔리제이에 내장된 database에 연결하고 싶은 DB 연결
  • 정상적으로 연결되는 것을 확인함

MySQL 버전 문제

  • 로컬에 설치된 MySQL 버전 확인 : 8.0.3

  • 프로젝트의 build.gralde에는 8.0.27이므로 8.0.3으로 변경햇지만 여전히 문제 해결안됨

Project Structure

  • 정상적으로 동작한다!!

결과

다른 모듈에 있는 라이브러리를 읽지 못해서 발생한 문제였다.

profile
백엔드 개발자를 시작으로 도메인 이해도까지 풍부한 개발자가 목표입니다!

0개의 댓글