JDBC 연결 - 오류 발생의 사례들

2022. 1. 19. 13:40·JAVA/JSP & Servlet

JDBC를 사용하다보면 여러가지 오류가 발생하게 되는데

대체로 url이나 driver 설정과정에서 문제가 생긴다

 

1. driver 문제

문제의 코드

Class.forName("com.mysql.jdbc.Driver");
  • 예전에 쓰이던 드라이버 클래스이다.
  • 실행은 되지만 아래와 같은 경고창이 뜬다.
Loading class `com.mysql.jdbc.Driver'. This is deprecated. 
The new driver class is `com.mysql.cj.jdbc.Driver'.
 The driver is automatically registered via the SPI and 
manual loading of the driver class is generally unnecessary.

 

 

 

정상작동한 코드

Class.forName("com.mysql.cj.jdbc.Driver");

라고 꼭 적어주자!!

 

 

 

2. URL 문제 - Timezone Error

문제의 코드

String url = "jdbc:mysql://localhost:3306/mydb";

 

위와 같이 코드를 적으면

The server time zone value '´???¹?±¹ ???ؽ?' is unrecognized or represents more than one time zone.

와 같이 time zone 에러가 발생하게 된다.

jdbc:mysql://localhost:3306/mydb 뒤에 ?serverTimezone=UTC를 붙여주면된다....

그런데 여기서 또 에러가 발생한다.

 

 

 

3. URL 문제 - SSLException 에러

문제의 코드

String url = "jdbc:mysql://localhost:3306/musthave?serverTimezone=UTC";

이번엔

javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify

오류가 발생하기 시작한다.

SSL은 전송 계층 보안(TRansport Layer Security, TLS)으로 컴퓨터 네트워크에 통신 보안을 제공하기 위해

설계된 암호 규약인데 이것이 의도치 않게 DB연결을 방해한다.

 

정상적인 코드

String url = "jdbc:mysql://localhost:3306/musthave?useSSL=false&serverTimezone=UTC";
  • 정상작동하는 코드이다.
  • SSL 설정을 해체하는 것이기 때문에 보안상 굉장히 안 좋을 수 있다. (DB에 개인 정보가 있다면 절대 NO!!!!!!!)
String url = "jdbc:mysql://localhost:3306/musthave?useSSL=false&characterEncoding=UTF-8
			&serverTimezone=UTC";
  • 사실상 그렇게 필요하진 않지만 확실히 하고 싶다면 UTF-8을 설정해놓는 것도 좋다.

 

 

 

 

정상적인 코드 종합

package common;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;


public class JDBConnect {
	public Connection con;
	public Statement stmt;
	public PreparedStatement psmt;
	public ResultSet rs;
	
	public JDBConnect() {
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			
			String url = "jdbc:mysql://localhost:3306/musthave?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC";
			String user = "mysql_user";   // 대체로 root
			String pwd = "mysql_pwd";     // 설치할 때 설정했던 비밀번호
			con = DriverManager.getConnection(url, user, pwd);
			
			System.out.println("DB Connection Success");
			
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public void close() {
		try {
			if (rs != null) rs.close();
			if(stmt != null) stmt.close();
			if(psmt != null) psmt.close();
			if(con != null) con.close();
			
			System.out.println("JDBC Disconnection!");
			
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
}

 

 

'JAVA/JSP & Servlet' 카테고리의 다른 글
  • 커넥션풀 [JSP 기초]
  • 한글 인코딩 문제 해결 - 한글이 깨질 때 [JSP]
  • 내장 객체란? [JSP 기초]
  • JSTL 태그 사용 [JSP 기초]
gakko
gakko
좌충우돌 개발기
  • gakko
    MYVELOP 마이벨롭
    gakko
  • 전체
    오늘
    어제
    • 분류 전체보기 (203)
      • Spring (23)
        • Spring (10)
        • Spring Boot (7)
        • Spring Security (1)
        • Hibernate (4)
      • Test (3)
      • 끄적끄적 (6)
      • 활동 (35)
        • 부스트캠프 (23)
        • 동아리 (3)
        • 컨퍼런스 (3)
        • 글또 (5)
        • 오픈소스 컨트리뷰션 (1)
      • 디자인패턴 (0)
      • Git & GitHub (22)
        • Git (13)
        • Github Actions (1)
        • 오류해결 (5)
        • 기타(마크다운 등) (3)
      • 리눅스 (6)
        • 기초 (6)
        • 리눅스 서버 구축하기 (0)
      • Infra (2)
        • Docker (1)
        • Elastic Search (0)
        • Jenkins (1)
        • AWS (1)
      • MySQL (7)
        • 기초 (6)
        • Real MySQL (1)
      • 후기 (3)
        • Udemy 리뷰 (3)
      • CS (26)
        • 웹 기본지식 (0)
        • 자료구조 (13)
        • 운영체제 OS (12)
        • 데이터베이스 (1)
        • 시스템 프로그래밍 (0)
        • 기타 (0)
      • Tools (1)
        • 이클립스 (1)
        • IntelliJ (0)
      • 프로젝트 (1)
        • 모여모여(부스트캠프) (1)
      • JAVA (32)
        • Maven (6)
        • 오류해결 (11)
        • 자바 클래스&메소드 (1)
        • JSP & Servlet (12)
      • Javascript (5)
        • 기초 (3)
        • React (2)
      • Python (28)
        • 파이썬 함수 (9)
        • 알고리즘 문제풀이 (16)
        • 데이터 사이언스 (2)
        • 웹 크롤링 (1)
      • 단순정보전달글 저장소 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 우진님
  • 공지사항

  • 인기 글

  • 태그

    os
    운영체제
    오류해결
    부스트캠프 7기
    스프링부트
    Spring
    jsp
    파이썬
    GitHub
    자바스크립트
    부스트캠프 멤버십
    java
    부스트캠프
    자바
    웹개발
    스프링
    Python
    알고리즘
    MySQL
    Git
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
gakko
JDBC 연결 - 오류 발생의 사례들
상단으로

티스토리툴바