MyCATApache/Mycat-Server · warning
: is ignore,no need to migrate!
Error message
${schemaName}:${tableName} is ignore,no need to migrate! What it means
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.
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
Example fix
<!-- before: dataNode layout unchanged, table ignored --> <table name="t_order" rule="mod-rule" dataNode="dn1,dn2" /> <!-- after: add data nodes so migration is needed --> <table name="t_order" rule="mod-rule" dataNode="dn1,dn2,dn3,dn4" />
Defensive patterns
Strategy: validation
Validate before calling
// before migrating, compare data node sets per table
Set<String> oldDNs = resolveDataNodes(oldCfg, table);
Set<String> newDNs = resolveDataNodes(newCfg, table);
if (oldDNs.equals(newDNs)) {
System.out.println("skip (no node change): " + schema + ":" + table);
continue;
} Try / catch
try {
runMigration(migratorTables);
} catch (Exception e) {
LOGGER.warn("migration aborted: {}", e.getMessage());
} Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- SelfCheck### schema dbnode is empty!
- global table: : is ignore!
- SelfCheck### user all node is empty!
- SelfCheck### users node within the item is empty!
- SelfCheck### user refered schemas is empty!
AI-assisted analysis of MyCATApache/Mycat-Server@65f8d8beb7 (2026-09-11).
Data as JSON: /api/errors/2ec729949f207cb4.
Report an issue: GitHub.
Appendix: source
Thrown at src/main/java/io/mycat/util/dataMigrator/ConfigComparer.java:197
//忽略数据节点分布没有发生变化的表
if(isNeedMigrate(oldDN,newDN)){
LOGGER.info("old table:{}",oldTable);
LOGGER.info("new table:{}",newTable);
if (oldTable.getRule()== null){
LOGGER.info("beacuse {} rule is null,skip it,check it is er child table",oldTable);
return;
}
if (newTable.getRule()==null){
LOGGER.info("beacuse {} rule is null,skip it,check it is er child table.",newTable);
return;
}
checkRuleConfig(oldTable.getRule(), newTable.getRule(),schemaName,tableName);
RuleConfig newRC=newTable.getRule();
TableMigrateInfo tmi = new TableMigrateInfo(schemaName, tableName, oldDN, newDN, newRC.getRuleAlgorithm(), newRC.getColumn());
migratorTables.add(tmi);
}else{
String message = schemaName+":"+tableName+" is ignore,no need to migrate!";
LOGGER.warn(message);
System.out.println("Warn: "+message);
}
}
}
//对比前后表数据节点分布是否一致
private boolean isNeedMigrate(List<DataNode> oldDN,List<DataNode> newDN){
if(oldDN.size() != newDN.size()){
return true;
}
return false;
}
//获取拆分表对应节点列表,具体到实例地址、库
private List<DataNode> getDataNodes(TableConfig tableConfig,Map<String, DataNodeConfig> dnConfig,Map<String, DataHostConfig> dhConfig){
List<DataNode> dataNodes = new ArrayList<DataNode>();
//TO-DOView on GitHub (pinned to 65f8d8beb7)