forked from LogBlock/LogBlock
@@ -199,6 +199,41 @@ class Updater
|
|||||||
}
|
}
|
||||||
config.set("version", "1.52");
|
config.set("version", "1.52");
|
||||||
}
|
}
|
||||||
|
// Ensure charset for free-text fields is UTF-8
|
||||||
|
// As this may be an expensive operation and the database default may already be UTF-8, check on a table-by-table basis before converting
|
||||||
|
if (config.getString("version").compareTo("1.71") < 0) {
|
||||||
|
getLogger().info("Updating tables to 1.71 ...");
|
||||||
|
final Connection conn = logblock.getConnection();
|
||||||
|
try {
|
||||||
|
conn.setAutoCommit(true);
|
||||||
|
final Statement st = conn.createStatement();
|
||||||
|
if (isLogging(Logging.CHAT)) {
|
||||||
|
final ResultSet rs = st.executeQuery("SHOW FULL COLUMNS FROM `lb-chat` WHERE field = 'message'");
|
||||||
|
if (rs.next() && !rs.getString("Collation").substring(0,4).equalsIgnoreCase("utf8")) {
|
||||||
|
st.execute("ALTER TABLE `lb-chat` CONVERT TO CHARSET utf8");
|
||||||
|
getLogger().info("Table lb-chat modified");
|
||||||
|
} else {
|
||||||
|
getLogger().info("Table lb-chat already fine, skipping it");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (final WorldConfig wcfg : getLoggedWorlds()) {
|
||||||
|
final ResultSet rs = st.executeQuery("SHOW FULL COLUMNS FROM `"+wcfg.table+"-sign` WHERE field = 'signtext'");
|
||||||
|
if (rs.next() && !rs.getString("Collation").substring(0,4).equalsIgnoreCase("utf8")) {
|
||||||
|
st.execute("ALTER TABLE `"+wcfg.table+"-sign` CONVERT TO CHARSET utf8");
|
||||||
|
getLogger().info("Table "+wcfg.table+"-sign modified");
|
||||||
|
} else {
|
||||||
|
getLogger().info("Table "+wcfg.table+"-sign already fine, skipping it");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
st.close();
|
||||||
|
conn.close();
|
||||||
|
} catch (final SQLException ex) {
|
||||||
|
Bukkit.getLogger().log(Level.SEVERE, "[Updater] Error: ", ex);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
config.set("version", "1.71");
|
||||||
|
}
|
||||||
|
|
||||||
logblock.saveConfig();
|
logblock.saveConfig();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -212,10 +247,10 @@ class Updater
|
|||||||
conn.setAutoCommit(true);
|
conn.setAutoCommit(true);
|
||||||
createTable(dbm, state, "lb-players", "(playerid INT UNSIGNED NOT NULL AUTO_INCREMENT, playername varchar(32) NOT NULL, firstlogin DATETIME NOT NULL, lastlogin DATETIME NOT NULL, onlinetime INT UNSIGNED NOT NULL, ip varchar(255) NOT NULL, PRIMARY KEY (playerid), UNIQUE (playername))");
|
createTable(dbm, state, "lb-players", "(playerid INT UNSIGNED NOT NULL AUTO_INCREMENT, playername varchar(32) NOT NULL, firstlogin DATETIME NOT NULL, lastlogin DATETIME NOT NULL, onlinetime INT UNSIGNED NOT NULL, ip varchar(255) NOT NULL, PRIMARY KEY (playerid), UNIQUE (playername))");
|
||||||
if (isLogging(Logging.CHAT))
|
if (isLogging(Logging.CHAT))
|
||||||
createTable(dbm, state, "lb-chat", "(id INT UNSIGNED NOT NULL AUTO_INCREMENT, date DATETIME NOT NULL, playerid INT UNSIGNED NOT NULL, message VARCHAR(255) NOT NULL, PRIMARY KEY (id), KEY playerid (playerid), FULLTEXT message (message)) ENGINE=MyISAM");
|
createTable(dbm, state, "lb-chat", "(id INT UNSIGNED NOT NULL AUTO_INCREMENT, date DATETIME NOT NULL, playerid INT UNSIGNED NOT NULL, message VARCHAR(255) NOT NULL, PRIMARY KEY (id), KEY playerid (playerid), FULLTEXT message (message)) ENGINE=MyISAM DEFAULT CHARSET utf8");
|
||||||
for (final WorldConfig wcfg : getLoggedWorlds()) {
|
for (final WorldConfig wcfg : getLoggedWorlds()) {
|
||||||
createTable(dbm, state, wcfg.table, "(id INT UNSIGNED NOT NULL AUTO_INCREMENT, date DATETIME NOT NULL, playerid INT UNSIGNED NOT NULL, replaced TINYINT UNSIGNED NOT NULL, type TINYINT UNSIGNED NOT NULL, data TINYINT UNSIGNED NOT NULL, x MEDIUMINT NOT NULL, y SMALLINT UNSIGNED NOT NULL, z MEDIUMINT NOT NULL, PRIMARY KEY (id), KEY coords (x, z, y), KEY date (date), KEY playerid (playerid))");
|
createTable(dbm, state, wcfg.table, "(id INT UNSIGNED NOT NULL AUTO_INCREMENT, date DATETIME NOT NULL, playerid INT UNSIGNED NOT NULL, replaced TINYINT UNSIGNED NOT NULL, type TINYINT UNSIGNED NOT NULL, data TINYINT UNSIGNED NOT NULL, x MEDIUMINT NOT NULL, y SMALLINT UNSIGNED NOT NULL, z MEDIUMINT NOT NULL, PRIMARY KEY (id), KEY coords (x, z, y), KEY date (date), KEY playerid (playerid))");
|
||||||
createTable(dbm, state, wcfg.table + "-sign", "(id INT UNSIGNED NOT NULL, signtext VARCHAR(255) NOT NULL, PRIMARY KEY (id))");
|
createTable(dbm, state, wcfg.table + "-sign", "(id INT UNSIGNED NOT NULL, signtext VARCHAR(255) NOT NULL, PRIMARY KEY (id)) DEFAULT CHARSET utf8");
|
||||||
createTable(dbm, state, wcfg.table + "-chest", "(id INT UNSIGNED NOT NULL, itemtype SMALLINT UNSIGNED NOT NULL, itemamount SMALLINT NOT NULL, itemdata TINYINT UNSIGNED NOT NULL, PRIMARY KEY (id))");
|
createTable(dbm, state, wcfg.table + "-chest", "(id INT UNSIGNED NOT NULL, itemtype SMALLINT UNSIGNED NOT NULL, itemamount SMALLINT NOT NULL, itemdata TINYINT UNSIGNED NOT NULL, PRIMARY KEY (id))");
|
||||||
if (wcfg.isLogging(Logging.KILL))
|
if (wcfg.isLogging(Logging.KILL))
|
||||||
createTable(dbm, state, wcfg.table + "-kills", "(id INT UNSIGNED NOT NULL AUTO_INCREMENT, date DATETIME NOT NULL, killer INT UNSIGNED, victim INT UNSIGNED NOT NULL, weapon SMALLINT UNSIGNED NOT NULL, x SMALLINT NOT NULL, y TINYINT UNSIGNED NOT NULL, z SMALLINT NOT NULL, PRIMARY KEY (id))");
|
createTable(dbm, state, wcfg.table + "-kills", "(id INT UNSIGNED NOT NULL AUTO_INCREMENT, date DATETIME NOT NULL, killer INT UNSIGNED, victim INT UNSIGNED NOT NULL, weapon SMALLINT UNSIGNED NOT NULL, x SMALLINT NOT NULL, y TINYINT UNSIGNED NOT NULL, z SMALLINT NOT NULL, PRIMARY KEY (id))");
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
name: ${project.name}
|
name: ${project.name}
|
||||||
version: '1.70'
|
version: '1.71'
|
||||||
author: DiddiZ
|
author: DiddiZ
|
||||||
authors: [md_5, ammar2]
|
authors: [md_5, ammar2]
|
||||||
website: http://dev.bukkit.org/server-mods/logblock/
|
website: http://dev.bukkit.org/server-mods/logblock/
|
||||||
|
Reference in New Issue
Block a user