import java.sql.*; import java.nio.file.*; public class FinalSync { static final String MASTER_URL = "jdbc:mysql://cq-cdb-8fjmemkb.sql.tencentcdb.com:27220/ylrz_saas?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true"; static final String TENANT_URL = "jdbc:mysql://cq-cdb-8fjmemkb.sql.tencentcdb.com:27220/fs_tenant_t202606174488?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true"; static final String USER = "root"; static final String PASS = "Ylrz_1q2w3e4r5t6y"; public static void main(String[] args) throws Exception { Class.forName("com.mysql.cj.jdbc.Driver"); // === MASTER === System.out.println("=== MASTER ==="); String masterSql = Files.readString(Paths.get("d:\\ylrz_saas_new\\java\\sql\\master\\V20260618_02__lobster_menu_full_sync.sql")); try (Connection c = DriverManager.getConnection(MASTER_URL, USER, PASS); Statement s = c.createStatement()) { s.execute(masterSql); System.out.println("OK"); } catch (SQLException e) { System.out.println("ERR: " + e.getMessage().split("\\n")[0]); } // Verify master try (Connection c = DriverManager.getConnection(MASTER_URL, USER, PASS); Statement s = c.createStatement()) { System.out.println(" tenant_sys_menu 29941: "+exists(s,"tenant_sys_menu",29941)); System.out.println(" tenant_sys_menu 29950: "+exists(s,"tenant_sys_menu",29950)); System.out.println(" tenant_company_menu 29941: "+exists(s,"tenant_company_menu",29941)); System.out.println(" tenant_company_menu 29950: "+exists(s,"tenant_company_menu",29950)); System.out.println(" tenant_company_menu count: "+cnt(s,"tenant_company_menu")); System.out.println(" tenant_sys_menu count: "+cnt(s,"tenant_sys_menu")); } // === TENANT === System.out.println("\n=== TENANT (fs_tenant_t202606174488) ==="); String tenantSql = Files.readString(Paths.get("d:\\ylrz_saas_new\\java\\fs-agent\\src\\main\\resources\\db\\migration\\tenant\\V20260618_08__lobster_menu_complete_sync.sql")); try (Connection c = DriverManager.getConnection(TENANT_URL, USER, PASS); Statement s = c.createStatement()) { s.execute(tenantSql); System.out.println("OK"); } catch (SQLException e) { System.out.println("ERR: " + e.getMessage().split("\\n")[0]); } // Verify tenant try (Connection c = DriverManager.getConnection(TENANT_URL, USER, PASS); Statement s = c.createStatement()) { System.out.println(" sys_menu: " + list(s,"sys_menu")); System.out.println(" company_menu: " + list(s,"company_menu")); System.out.println(" sys_menu count: "+cnt(s,"sys_menu")); System.out.println(" company_menu count: "+cnt(s,"company_menu")); } System.out.println("\n=== DONE ==="); } static int cnt(Statement s, String t) throws SQLException { ResultSet rs = s.executeQuery("SELECT COUNT(1) FROM "+t+" WHERE menu_id BETWEEN 29900 AND 29999"); rs.next(); return rs.getInt(1); } static String exists(Statement s, String t, int id) throws SQLException { ResultSet rs = s.executeQuery("SELECT menu_id, menu_name FROM "+t+" WHERE menu_id="+id); if (rs.next()) return rs.getString(1)+"("+rs.getString(2)+")"; return "MISSING"; } static String list(Statement s, String t) throws SQLException { StringBuilder sb = new StringBuilder(); ResultSet rs = s.executeQuery("SELECT menu_id, CASE visible WHEN '0' THEN '' ELSE 'H' END FROM "+t+" WHERE menu_id BETWEEN 29900 AND 29999 ORDER BY menu_id"); while (rs.next()) sb.append(rs.getString(1)).append(rs.getString(2)).append(" "); return sb.toString(); } }