{"record":{"id":"2ec729949f207cb4","repo":"MyCATApache/Mycat-Server","slug":"schemaname-tablename-is-ignore-no-need-to-mi","errorCode":null,"errorMessage":"${schemaName}:${tableName} is ignore,no need to migrate!","messagePattern":"(.+?):(.+?) is ignore,no need to migrate!","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/main/java/io/mycat/util/dataMigrator/ConfigComparer.java","lineNumber":197,"sourceCode":"\t\t\t//忽略数据节点分布没有发生变化的表\n\t\t\tif(isNeedMigrate(oldDN,newDN)){\n\t\t\t\tLOGGER.info(\"old table:{}\",oldTable);\n\t\t\t\tLOGGER.info(\"new table:{}\",newTable);\n\t\t\t\tif (oldTable.getRule()== null){\n\t\t\t\t\tLOGGER.info(\"beacuse {} rule is null,skip it,check it is er child table\",oldTable);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (newTable.getRule()==null){\n\t\t\t\t\tLOGGER.info(\"beacuse {} rule is null,skip it,check it is er child table.\",newTable);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcheckRuleConfig(oldTable.getRule(), newTable.getRule(),schemaName,tableName);\n\t\t\t\tRuleConfig newRC=newTable.getRule();\n\t\t\t\tTableMigrateInfo tmi = new TableMigrateInfo(schemaName, tableName, oldDN, newDN, newRC.getRuleAlgorithm(), newRC.getColumn());\n\t\t\t\tmigratorTables.add(tmi);\n\t\t\t}else{\n\t\t\t\tString message = schemaName+\":\"+tableName+\" is ignore,no need to migrate!\";\n\t\t\t\tLOGGER.warn(message);\n\t\t\t\tSystem.out.println(\"Warn: \"+message);\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\t\n\t//对比前后表数据节点分布是否一致\n\tprivate boolean isNeedMigrate(List<DataNode> oldDN,List<DataNode> newDN){\n\t\tif(oldDN.size() != newDN.size()){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\t\n\t//获取拆分表对应节点列表,具体到实例地址、库\n\tprivate List<DataNode> getDataNodes(TableConfig tableConfig,Map<String, DataNodeConfig> dnConfig,Map<String, DataHostConfig> dhConfig){\n\t\tList<DataNode> dataNodes = new ArrayList<DataNode>();\n\t\t//TO-DO","sourceCodeStart":179,"sourceCodeEnd":215,"githubUrl":"https://github.com/MyCATApache/Mycat-Server/blob/65f8d8beb752f935752f2a0eec0ab017facab9ef/src/main/java/io/mycat/util/dataMigrator/ConfigComparer.java#L179-L215","documentation":"ConfigComparer.loadMigratorTable skips tables whose data node distribution is unchanged between the old and new configuration (isNeedMigrate returned false). Because the table's data nodes did not change, there is nothing to move, so it is excluded from the migration plan and reported as a warning. This is expected behavior, not an error.","triggerScenarios":"Running the data migrator when a table's dataNode list (resolved through getDataNodes from dataHost/dataNode configs) is identical in old and new schema configuration.","commonSituations":"Bulk-migrating a full schema where most tables keep the same layout; users expecting every table to appear in the migration plan; accidentally passing the same config file as both old and new.","solutions":["Verify the table's data node distribution truly does not need to change — if so, ignore this warning","If the table should be re-distributed, update its dataNode assignments (or the rule) in the new schema config so oldDN != newDN and rerun","Check you passed the correct (different) old and new config files to the migrator, not the same file twice"],"exampleFix":"<!-- before: dataNode layout unchanged, table ignored -->\n<table name=\"t_order\" rule=\"mod-rule\" dataNode=\"dn1,dn2\" />\n<!-- after: add data nodes so migration is needed -->\n<table name=\"t_order\" rule=\"mod-rule\" dataNode=\"dn1,dn2,dn3,dn4\" />","handlingStrategy":"validation","validationCode":"// before migrating, compare data node sets per table\nSet<String> oldDNs = resolveDataNodes(oldCfg, table);\nSet<String> newDNs = resolveDataNodes(newCfg, table);\nif (oldDNs.equals(newDNs)) {\n    System.out.println(\"skip (no node change): \" + schema + \":\" + table);\n    continue;\n}","typeGuard":null,"tryCatchPattern":"try {\n    runMigration(migratorTables);\n} catch (Exception e) {\n    LOGGER.warn(\"migration aborted: {}\", e.getMessage());\n}","preventionTips":["Diff old and new dataNode layouts per table before running the migrator","Ensure old and new config files passed to the migrator are actually different versions","Expect skip warnings for unchanged tables — treat them as informational output"],"tags":["data-migration","data-node","mycat","config"],"backgroundTag":"unsupported-operation","analyzedSha":"65f8d8beb752f935752f2a0eec0ab017facab9ef","analyzedAt":"2026-09-11T00:12:21.696Z","contentChangedAt":"2026-09-11T00:12:21.696Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}