Class DatabaseBootstrap

java.lang.Object
database.DatabaseBootstrap

public final class DatabaseBootstrap extends Object
開服前的資料庫自動準備(自動建庫 + 自動初始化)。

流程:

  1. 若目標資料庫不存在 → CREATE DATABASE IF NOT EXISTS
  2. 若資料庫缺少核心資料表(accounts)→ 呼叫 mysql.exe 匯入初始化 SQL(預設 sql/twms149_full.sql)。
資料庫已初始化(accounts 已存在)時直接略過,正常開服流程不受影響、不輸出雜訊。

呼叫時機(重要):必須在 server.Start.main() 的第一行、且在任何會 觸碰 ServerProperties / DatabaseConnection 的程式之前呼叫。原因: ServerProperties 的 static 初始化會立刻查 auth_server_channel_ip, DatabaseConnection 直接連到具名資料庫,兩者在「資料庫尚未建立」時都會失敗 (後者連不上、前者 System.exit(0))。因此本類別完全自包含:自行解析 settings.ini、自行用 JDBC 連到 server 層級(URL 不指定資料庫),不依賴上述任何 會提前觸發 DB 連線的類別。

本類別所讀的 settings.ini 鍵(沿用 DB 設定,另加兩個選用鍵)刻意 經由 ServerProperties/ServerConstants,因為它必須在那兩者初始化「之前」 執行 —— 這是 CLAUDE.md「新 tunable 同時改 settings.ini 與 ServerConstants」規則的合理例外。

  • Method Details

    • ensureDatabaseReady

      public static void ensureDatabaseReady()