Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

JDBC 'Unknown database' 오류 해결 방법 – Java와 MySQL 연결 시 원인과 대처법

JDBC 'Unknown database' 오류란 무엇인가?

Java에서 JDBC를 통해 MySQL에 접속할 때 'Unknown database' 오류는 접속 URL에 지정한 데이터베이스가 MySQL 서버에 실제로 존재하지 않는 경우에 발생합니다. 즉, 오타가 있거나 아직 생성되지 않은 데이터베이스 이름을 사용했을 때 나타나는 전형적인 문제입니다.

먼저 이 오류가 어떻게 발생하는지 실제 예제를 통해 살펴보겠습니다.

오류가 발생하는 Java 코드 예제

아래 코드에서는 'onlinebookstore'라는 데이터베이스에 접속을 시도합니다. 하지만 이 데이터베이스는 MySQL 서버에 존재하지 않기 때문에 오류가 발생합니다.

import java.sql.Connection;
import java.sql.DriverManager;
public class UnknownDatabaseDemo {
   public static void main(String[] args) {
      String JdbcURL = "jdbc:mysql://localhost:3306/onlinebookstore?useSSL=false";
      String Username = "root";
      String password = "123456";
      Connection con = null;
      try {
         con = DriverManager.getConnection(JdbcURL, Username, password);
         System.out.println("Connected to MySQL database");
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

발생한 오류 메시지

위 코드를 실행하면 다음과 같은 MySQLSyntaxErrorException이 출력됩니다.

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'onlinebookstore'
   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
   at java.lang.reflect.Constructor.newInstance(Unknown Source)
   at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
   at com.mysql.jdbc.Util.getInstance(Util.java:408)
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871)
   at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1714)
   at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1224)
   at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2199)
   at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2230)
   at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2025)
   at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:778)
   at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
   at java.lang.reflect.Constructor.newInstance(Unknown Source)
   at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
   at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386)
   at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)
   at java.sql.DriverManager.getConnection(Unknown Source)
   at java.sql.DriverManager.getConnection(Unknown Source)
   at UnknowDatabaseDemo.main(UnknowDatabaseDemo.java:15)

JDBC  Unknown database  오류 해결 방법 – Java와 MySQL 연결 시 원인과 대처법

해결 방법: 실제 존재하는 데이터베이스 확인하기

이 오류를 해결하는 가장 간단한 방법은 MySQL 명령줄(CLI)에 접속하여 실제로 존재하는 데이터베이스 목록을 확인한 뒤, 그중에서 실제로 존재하는 데이터베이스를 JDBC URL에 지정하는 것입니다.

MySQL 명령줄에서 SHOW DATABASES; 명령어를 실행하면 서버에 생성된 모든 데이터베이스의 목록을 볼 수 있습니다.

JDBC  Unknown database  오류 해결 방법 – Java와 MySQL 연결 시 원인과 대처법

여기서는 목록에 있는 'hb_student_tracker' 데이터베이스를 사용해 보겠습니다.

수정된 JDBC 연결 코드

아래는 'hb_student_tracker' 데이터베이스에 정상적으로 접속하도록 수정된 코드입니다.

import java.sql.Connection;
import java.sql.DriverManager;
public class UnknownDatabaseDemo {
   public static void main(String[] args) {
      String JdbcURL = "jdbc:mysql://localhost:3306/hb_student_tracker?useSSL=false";
      String Username = "root";
      String password = "123456";
      Connection con = null;
      try {
         con = DriverManager.getConnection(JdbcURL, Username, password);
         System.out.println("Connected to MySQL database");
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

실행하면 더 이상 오류가 발생하지 않고 정상적으로 MySQL 데이터베이스에 연결됩니다.

JDBC  Unknown database  오류 해결 방법 – Java와 MySQL 연결 시 원인과 대처법

정리 및 추가 팁

  • 원인: JDBC URL에 지정한 데이터베이스가 MySQL 서버에 존재하지 않음
  • 확인 방법: MySQL CLI에서 SHOW DATABASES; 실행
  • 해결: 존재하는 데이터베이스 이름으로 URL을 수정하거나, 필요하다면 CREATE DATABASE 데이터베이스명;으로 새로 생성
  • 주의: 데이터베이스 이름의 대소문자 구분 여부(운영체제별 차이)와 오타도 함께 확인하세요.