import java.sql.*; public class FixCompMenu { static final String 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"); try (Connection c = DriverManager.getConnection(URL, USER, PASS); Statement s = c.createStatement()) { // Find all company_ids System.out.println("Existing company_ids:"); ResultSet rs = s.executeQuery("SELECT DISTINCT company_id, COUNT(1) FROM company_menu WHERE menu_id BETWEEN 29900 AND 29999 GROUP BY company_id"); int n = 0; while (rs.next()) { System.out.println(" cid="+rs.getString(1)+" cnt="+rs.getInt(2)); n++; } if (n==0) System.out.println(" (none - all NULL)"); // Also check if NULL entries exist rs = s.executeQuery("SELECT COUNT(1) FROM company_menu WHERE menu_id=29900 AND company_id IS NULL"); rs.next(); System.out.println("NULL company_id entries: " + rs.getInt(1)); // Fix: set company_id=1 for existing NULL entries if needed s.executeUpdate("UPDATE company_menu SET company_id = 1 WHERE company_id IS NULL AND menu_id = 29900"); // Now insert all missing menus for company_id=1 String[] ids = {"32481","29949","29905","29907","29925","29948","29923","29922", "29944","29936","29909","29908","29912","29935","29947","29934","29933", "29924","29946","29906","3008","29938","29937","29939","29941","29950"}; for (String id : ids) { try { int r = s.executeUpdate("INSERT IGNORE INTO company_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, company_id, remark) " + "SELECT menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, 1, remark FROM sys_menu WHERE menu_id="+id); if (r > 0) System.out.println(" INSERT "+id+" OK"); } catch (SQLException e) { if (!e.getMessage().contains("Duplicate")) System.out.println(" "+id+" ERR: "+e.getMessage().split("\\n")[0]); } } System.out.println("\nFinal company_menu count: " + cnt(s)); rs = s.executeQuery("SELECT menu_id, menu_name, visible FROM company_menu WHERE menu_id BETWEEN 29900 AND 29999 ORDER BY menu_id"); while (rs.next()) System.out.println(" "+rs.getString(1)+" "+rs.getString(2)+" vis="+rs.getString(3)); } } static int cnt(Statement s) throws SQLException { ResultSet rs = s.executeQuery("SELECT COUNT(1) FROM company_menu WHERE menu_id BETWEEN 29900 AND 29999"); rs.next(); return rs.getInt(1); } }