🏭 에러공장 10편 - SQLException 오류 해결법
이번 에러는 DB와 Java의 연결이 끊겼을 때 발생합니다.
Exception in thread "main" java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
SQL 문법 오류, 인증 실패, URL 설정 문제 등 다양한 이유로 발생하며, JDBC 기반 DB 작업 중 가장 많이 보이는 친구입니다.
❓ 대표 발생 상황
- 계정 인증 오류
ID/PW 틀림 또는 해당 유저에게 권한이 없음 - DB URL 설정 오류
호스트명, 포트번호, 데이터베이스 이름 잘못됨 - JDBC 드라이버 누락
Maven 의존성 또는 JAR 파일 누락 - 테이블/컬럼 없음
쿼리에서 호출한 테이블이나 컬럼이 실제로 존재하지 않음 - SQL 문법 오류
괄호, 따옴표, 예약어, 오타 등
🛠 해결 전략
- 1. DB URL, 계정 정보, 포트 확인
- 2. JDBC 드라이버가 포함되어 있는지 확인
- 3. SQLException 메시지에서 SQLState 코드 분석
- 4. DB 툴(Workbench, CLI 등)에서 직접 쿼리 실행해보기
- 5.
PreparedStatement
를 사용하여 SQL Injection 방지
🧪 예시 코드
String url = "jdbc:mariadb://localhost:3306/housing";
String user = "root";
String password = "1234";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
// 연결 성공
} catch (SQLException e) {
e.printStackTrace();
}
📌 전체 설명 보기
👉 https://koynalpha-dev.tistory.com/entry/error10
🏷️ 추천 태그
Java, SQLException, DB 오류, MySQL 접속 실패, JDBC 예외, SQL 문법 오류, 에러공장, 데이터베이스 자바 연동
👉 다음 글 예고
에러공장 11편: StackOverflowError - 재귀 호출, 선 넘지 마!