{"record":{"id":"283b58d5bd8a8a4d","repo":"MyCATApache/Mycat-Server","slug":"global-table-schemaname-tablename-is-ignore","errorCode":null,"errorMessage":"global table: ${schemaName}:${tableName} is ignore!","messagePattern":"global table: (.+?):(.+?) is ignore!","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/main/java/io/mycat/util/dataMigrator/ConfigComparer.java","lineNumber":175,"sourceCode":"\t\t\t\tTableConfig newTable = newTables.get(tableName);\n\t\t\t\tloadMigratorTable(oldTable, newTable,schemaName,tableName);\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t\n\t\n\tprivate void loadMigratorTable(TableConfig oldTable,TableConfig newTable,String schemaName,String tableName){\n\t\t//禁止配置非拆分表\n\t\tif(oldTable == null || newTable == null){\n\t\t\tthrow new ConfigException(\"please check tableFile.properties,make sure \"+schemaName+\":\"+tableName+\" is sharding table \");\n\t\t}\n\t\t//忽略全局表\n\t\tif(oldTable.isGlobalTable()||newTable.isGlobalTable()){\n\t\t\tString message = \"global table: \"+schemaName+\":\"+tableName+\" is ignore!\";\n\t\t\tSystem.out.println(\"Warn: \"+message);\n\t\t\tLOGGER.warn(message);\n\t\t}else{\n\t\t\tList<DataNode > oldDN = getDataNodes(oldTable,oldDataNodes,oldDataHosts);\n\t\t\tList<DataNode > newDN = getDataNodes(newTable,newDataNodes,newDataHosts);\n\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());","sourceCodeStart":157,"sourceCodeEnd":193,"githubUrl":"https://github.com/MyCATApache/Mycat-Server/blob/65f8d8beb752f935752f2a0eec0ab017facab9ef/src/main/java/io/mycat/util/dataMigrator/ConfigComparer.java#L157-L193","documentation":"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.","triggerScenarios":"Running the data migrator (loadMigratorTables) against a schema.xml where the table has type=\"global\" in the old and/or new configuration.","commonSituations":"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.","solutions":["Confirm the table should be global — if so, no migration action is needed; global table data is already replicated on all data nodes","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","Review the WARN line in the migrator output to list all skipped global tables and verify each intentionally"],"exampleFix":"<!-- before: table skipped by migrator -->\n<table name=\"t_dict\" type=\"global\" dataNode=\"dn1,dn2\" />\n<!-- after: convert to sharded table so it is migrated -->\n<table name=\"t_dict\" rule=\"mod-rule\" dataNode=\"dn1,dn2\" />","handlingStrategy":"validation","validationCode":"// before running the migrator, filter out global tables\nif (\"global\".equalsIgnoreCase(table.getAttribute(\"type\"))) {\n    System.out.println(\"skipping global table: \" + schema + \":\" + table.getName());\n    continue;\n}","typeGuard":null,"tryCatchPattern":"try {\n    loadMigratorTables(configs);\n} catch (ConfigException e) {\n    LOGGER.warn(\"skipped: {}\", e.getMessage());\n}","preventionTips":["List all global tables (type=\"global\" in schema.xml) before planning a migration","Exclude global tables from migration tooling expectations — their data is replicated everywhere","If a table must be re-sharded, convert it from global to sharded first"],"tags":["data-migration","global-table","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"}