@@ -19,11 +19,12 @@ public static void initTables() {
1919 // グループの基本情報(UUID主キー+表示名+バージョンなど)
2020 stmt .executeUpdate (
2121 "CREATE TABLE IF NOT EXISTS group_table (" +
22- "group_uuid VARCHAR(255) PRIMARY KEY, " + // 内部識別子(UUID)
23- "group_name VARCHAR(255) UNIQUE NOT NULL, " + // 論理名(内部参照に使う)
24- "display_name VARCHAR(255), " + // 表示名(ユーザー向け)
25- "is_private BOOLEAN NOT NULL, " + // 非公開グループかどうか
26- "owner_plugin VARCHAR(255), " + // このグループを扱うプラグイン名
22+ "group_uuid VARCHAR(255) PRIMARY KEY, " + // 内部識別子(UUID)
23+ "group_name VARCHAR(255) UNIQUE NOT NULL, " + // 論理名(内部参照に使う)
24+ "display_name VARCHAR(255), " + // 表示名(ユーザー向け)
25+ "is_private BOOLEAN NOT NULL, " + // 非公開グループかどうか
26+ "owner_plugin VARCHAR(255), " + // このグループを扱うプラグイン名
27+ "ecp_imported TINYINT(1) NOT NULL DEFAULT 0 " + // ECPからインポート済みかどうか
2728 ");"
2829 );
2930
@@ -292,13 +293,23 @@ private static String getTableNameFromIndex(String indexName) {
292293 * @param columnDefinition カラムの定義(例: "BOOLEAN NOT NULL DEFAULT FALSE")
293294 */
294295 private static void addColumnIfNotExists (Connection conn , String tableName , String columnName , String columnDefinition ) {
295- try (ResultSet rs = conn .getMetaData ().getColumns (null , null , tableName , columnName )) {
296- if (!rs .next ()) {
297- try (Statement stmt = conn .createStatement ()) {
298- stmt .executeUpdate ("ALTER TABLE " + tableName + " ADD COLUMN " + columnName + " " + columnDefinition );
299- LOGGER .info ("[BetterStorage] " + tableName + " にカラム '" + columnName + "' を追加したにゃ!" );
296+ try {
297+ boolean exists = false ;
298+ try (ResultSet rs = conn .getMetaData ().getColumns (null , null , tableName , columnName )) {
299+ exists = rs .next ();
300+ }
301+ if (!exists ) {
302+ try (ResultSet rs = conn .getMetaData ().getColumns (null , null , tableName .toUpperCase (), columnName .toUpperCase ())) {
303+ exists = rs .next ();
300304 }
301305 }
306+ if (exists ) return ;
307+
308+ String sql = "ALTER TABLE `" + tableName + "` ADD COLUMN `" + columnName + "` " + columnDefinition ;
309+ try (Statement stmt = conn .createStatement ()) {
310+ stmt .executeUpdate (sql );
311+ LOGGER .info ("[BetterStorage] " + tableName + " にカラム '" + columnName + "' を追加したにゃ!" );
312+ }
302313 } catch (SQLException e ) {
303314 LOGGER .warning ("[BetterStorage] " + tableName + " のカラム '" + columnName + "' チェック中にエラーが起きたにゃ: " + e .getMessage ());
304315 }
0 commit comments