Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แก้ไข JDBC Error: Unknown Database 'onlinebookstore' ใน Java-MySQL

การแก้ไขข้อผิดพลาด "Unknown database" ใน JDBC Connection

ข้อผิดพลาด MySQLSyntaxErrorException: Unknown database 'onlinebookstore' เกิดจากการระบุ Database Name ใน Connection URL ที่ ไม่มีอยู่จริง ใน MySQL Server

โค้ด Java ที่ทำให้เกิด Error

String JdbcURL = "jdbc:mysql://localhost:3306/onlinebookstore?useSSL=false";
String Username = "root";
String password = "123456";
Connection con = DriverManager.getConnection(JdbcURL, Username, password);

Stack Trace:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'onlinebookstore'
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978)
    ...
    at UnknowDatabaseDemo.main(UnknowDatabaseDemo.java:15)

วิธีแก้ไข

  1. เข้า MySQL Command Line: mysql -u root -p
  2. ดู Database ที่มีอยู่: SHOW DATABASES;
  3. เลือก Database ที่มีจริง (ตัวอย่าง: hb_student_tracker)
  4. แก้ Connection URL ให้ตรงกับ Database ที่มีอยู่

โค้ด Java ที่แก้ไขแล้ว

String JdbcURL = "jdbc:mysql://localhost:3306/hb_student_tracker?useSSL=false";
String Username = "root";
String password = "123456";
Connection con = DriverManager.getConnection(JdbcURL, Username, password);
System.out.println("Connected to MySQL database");

ผลลัพธ์: Connected to MySQL database

Best Practices ป้องกัน Error นี้

  • Externalize Config: ใส่ DB Name ใน properties/YAML file ไม่ได้ Hardcode
  • Validate at Startup: ตรวจสอบ Database มีอยู่จริงตอน Startup ด้วย Query SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = ?
  • Auto-create (Dev only): ใช้ CREATE DATABASE IF NOT EXISTS ใน Migration Script (Flyway/Liquibase)
  • Connection Pool: ใช้ HikariCP ตั้งค่า connectionInitSql ตรวจสอบ DB

ข้อผิดพลาดที่คล้ายกัน

  • Access denied for user → User/Password ผิด หรือ Host ไม่ได้รับอนุญาต
  • Communications link failure → Host/Port ผิด, Firewall, MySQL ไม่ได้ Run
  • Public Key Retrieval is not allowed → เพิ่ม allowPublicKeyRetrieval=true ใน URL (MySQL 8.0+)