FixTwo.java 2.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. import java.sql.*;
  2. public class FixTwo {
  3. static final String U = "root"; static final String P = "Ylrz_1q2w3e4r5t6y";
  4. public static void main(String[] a) throws Exception {
  5. Class.forName("com.mysql.cj.jdbc.Driver");
  6. fix("fs_tenant_t202606124273");
  7. fix("fs_tenant_t202606154320");
  8. }
  9. static void fix(String db) throws Exception {
  10. String url = "jdbc:mysql://cq-cdb-8fjmemkb.sql.tencentcdb.com:27220/"+db+"?allowMultiQueries=true&serverTimezone=Asia/Shanghai";
  11. try (Connection c = DriverManager.getConnection(url,U,P); Statement s = c.createStatement()) {
  12. // Check state
  13. ResultSet r = s.executeQuery("SELECT COUNT(1), MIN(company_id) FROM company_menu WHERE menu_id=29900");
  14. r.next(); System.out.println(db+": cnt="+r.getInt(1)+" cid="+r.getString(2));
  15. // Force insert root if missing
  16. 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) VALUES (29900,'数字员工',0,100,'/lobster','',0,0,'M','0','0',NULL,'el-icon-cpu','admin',NOW(),1,'Lobster Engine')");
  17. // Now all NULL cid → 1
  18. s.executeUpdate("UPDATE company_menu SET company_id = 1 WHERE company_id IS NULL");
  19. // Now re-run the V08 INSERT IGNORE parts (the sys_menu sync already worked)
  20. int[] ids = {32481,29949,29905,29907,29925,29923,29944,29936,29909,29908,29912,29935,29947,29934,29933,29924,29946,29906,3008,29938,29937,29939,29920,29941,29950,29948,29922};
  21. for (int id : ids) {
  22. 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 m.menu_id,m.menu_name,m.parent_id,m.order_num,m.path,m.component,m.is_frame,m.is_cache,m.menu_type,m.visible,m.status,m.perms,m.icon,m.create_by,m.create_time,1,m.remark FROM sys_menu m WHERE m.menu_id="+id+" AND NOT EXISTS (SELECT 1 FROM company_menu x WHERE x.menu_id="+id+")");
  23. }
  24. r = s.executeQuery("SELECT COUNT(1) FROM company_menu WHERE menu_id BETWEEN 29900 AND 29999");
  25. r.next(); System.out.println(" -> company_menu count: "+r.getInt(1));
  26. }
  27. }
  28. }