MyCATApache/Mycat-Server · warning

global table: : is ignore!

Error message

global table: ${schemaName}:${tableName} is ignore!

What it means

During data migration planning, ConfigComparer.loadMigratorTable detects that the table is defined as a global table (same data replicated on all nodes) in either the old or new configuration. Global tables are excluded from migration because their data is identical across data nodes, so the table is simply skipped — this is an intentional skip, not a failure.

Solutions

  1. Confirm the table should be global — if so, no migration action is needed; global table data is already replicated on all data nodes
  2. If the table should be sharded, change its definition in schema.xml (remove type="global" or set a proper rule) in both old and new configs and rerun the migrator
  3. Review the WARN line in the migrator output to list all skipped global tables and verify each intentionally

Example fix

<!-- before: table skipped by migrator -->
<table name="t_dict" type="global" dataNode="dn1,dn2" />
<!-- after: convert to sharded table so it is migrated -->
<table name="t_dict" rule="mod-rule" dataNode="dn1,dn2" />
Defensive patterns

Strategy: validation

Validate before calling

// before running the migrator, filter out global tables
if ("global".equalsIgnoreCase(table.getAttribute("type"))) {
    System.out.println("skipping global table: " + schema + ":" + table.getName());
    continue;
}

Try / catch

try {
    loadMigratorTables(configs);
} catch (ConfigException e) {
    LOGGER.warn("skipped: {}", e.getMessage());
}

Prevention

When it happens

Trigger: Running the data migrator (loadMigratorTables) against a schema.xml where the table has type="global" in the old and/or new configuration.

Common situations: Migrating a cluster config where some tables were converted to/from global tables; users expecting global tables to be re-sharded and confused when they are missing from migration output.

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/283b58d5bd8a8a4d. Report an issue: GitHub.

Appendix: source

Thrown at src/main/java/io/mycat/util/dataMigrator/ConfigComparer.java:175

				TableConfig newTable = newTables.get(tableName);
				loadMigratorTable(oldTable, newTable,schemaName,tableName);
			}
		}
		
	}
	
	
	
	private void loadMigratorTable(TableConfig oldTable,TableConfig newTable,String schemaName,String tableName){
		//禁止配置非拆分表
		if(oldTable == null || newTable == null){
			throw new ConfigException("please check tableFile.properties,make sure "+schemaName+":"+tableName+" is sharding table ");
		}
		//忽略全局表
		if(oldTable.isGlobalTable()||newTable.isGlobalTable()){
			String message = "global table: "+schemaName+":"+tableName+" is ignore!";
			System.out.println("Warn: "+message);
			LOGGER.warn(message);
		}else{
			List<DataNode > oldDN = getDataNodes(oldTable,oldDataNodes,oldDataHosts);
			List<DataNode > newDN = getDataNodes(newTable,newDataNodes,newDataHosts);
			//忽略数据节点分布没有发生变化的表
			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());

View on GitHub (pinned to 65f8d8beb7)