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

  1. Verify the table's data node distribution truly does not need to change — if so, ignore this warning
  2. If the table should be re-distributed, update its dataNode assignments (or the rule) in the new schema config so oldDN != newDN and rerun
  3. 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

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


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-DO

View on GitHub (pinned to 65f8d8beb7)