| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.Statement;
- import java.util.ArrayList;
- import java.util.LinkedHashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * Fix garbled lobster sys-only admin menu names in DB.
- * Usage: java -cp ".;lib/mysql-connector-j-8.0.33.jar" FixLobsterSysOnlyMenuNames [tenantDb]
- */
- public class FixLobsterSysOnlyMenuNames {
- private static final String HOST = "cq-cdb-8fjmemkb.sql.tencentcdb.com:27220";
- private static final String USER = "root";
- private static final String PASS = "Ylrz_1q2w3e4r5t6y";
- private static final String MASTER_DB = "ylrz_saas";
- private static final Map<Long, String> NAMES = new LinkedHashMap<>();
- static {
- NAMES.put(29925L, "\u654f\u611f\u8bcd\u5e93");
- NAMES.put(29963L, "\u8fdd\u7981\u8bcd\u5e93");
- NAMES.put(29964L, "\u6613\u9519\u8bcd\u5e93");
- NAMES.put(29951L, "\u5411\u91cf\u77e5\u8bc6\u5e93");
- NAMES.put(29907L, "\u63d0\u793a\u8bcd\u7ba1\u7406");
- NAMES.put(29908L, "\u9500\u51a0\u8bed\u6599\u5b66\u4e60");
- NAMES.put(29909L, "\u63a5\u53e3\u6ce8\u518c\u4e2d\u5fc3");
- }
- private static final String QDRANT_REMARK = "Qdrant\u5411\u91cf\u77e5\u8bc6\u5e93";
- public static void main(String[] args) throws Exception {
- Class.forName("com.mysql.cj.jdbc.Driver");
- String tenantDb = args.length > 0 ? args[0] : "fs_tenant_cs1";
- System.out.println("=== MASTER " + MASTER_DB + " tenant_sys_menu ===");
- try (Connection c = open(MASTER_DB)) {
- fixTable(c, "tenant_sys_menu");
- verify(c, "tenant_sys_menu");
- }
- System.out.println("\n=== TENANT " + tenantDb + " sys_menu ===");
- try (Connection c = open(tenantDb)) {
- fixTable(c, "sys_menu");
- verify(c, "sys_menu");
- }
- }
- private static void fixTable(Connection c, String table) throws Exception {
- int n = 0;
- for (Map.Entry<Long, String> e : NAMES.entrySet()) {
- String sql = "UPDATE " + table + " SET menu_name = ?, update_time = NOW() WHERE menu_id = ?";
- try (PreparedStatement ps = c.prepareStatement(sql)) {
- ps.setString(1, e.getValue());
- ps.setLong(2, e.getKey());
- n += ps.executeUpdate();
- }
- }
- try (PreparedStatement ps = c.prepareStatement(
- "UPDATE " + table + " SET remark = ?, update_time = NOW() WHERE menu_id = 29951")) {
- ps.setString(1, QDRANT_REMARK);
- n += ps.executeUpdate();
- }
- System.out.println("updated rows=" + n);
- }
- private static void verify(Connection c, String table) throws Exception {
- String ids = "29925,29963,29964,29951,29907,29908,29909";
- try (Statement st = c.createStatement();
- ResultSet rs = st.executeQuery(
- "SELECT menu_id, menu_name, HEX(menu_name) hx FROM " + table
- + " WHERE menu_id IN (" + ids + ") ORDER BY menu_id")) {
- while (rs.next()) {
- long id = rs.getLong("menu_id");
- String name = rs.getString("menu_name");
- String expected = NAMES.get(id);
- String ok = expected != null && expected.equals(name) ? "OK" : "BAD";
- System.out.printf("[%d] %s | %s | %s%n", id, name, rs.getString("hx"), ok);
- }
- }
- }
- private static Connection open(String db) throws Exception {
- String url = "jdbc:mysql://" + HOST + "/" + db
- + "?useSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8";
- return DriverManager.getConnection(url, USER, PASS);
- }
- }
|