| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 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);
- }
- }
|