|
@@ -216,20 +216,20 @@ public class LogEventConvert extends AbstractCanalLifeCycle implements BinlogPar
|
|
|
if (tableMetaCache != null
|
|
|
&& (result.getType() == EventType.ALTER || result.getType() == EventType.ERASE || result.getType() == EventType.RENAME)) {
|
|
|
|
|
|
- for( ;result!=null; result = result.getRenameTableResult()) {
|
|
|
- schemaName = event.getDbName();
|
|
|
- if (StringUtils.isNotEmpty(result.getSchemaName())) {
|
|
|
- schemaName = result.getSchemaName();
|
|
|
+ for(DdlResult renameResult=result ;renameResult!=null; renameResult = renameResult.getRenameTableResult()) {
|
|
|
+ String schemaName0 = event.getDbName(); //防止 rename语句后产生 schema变更带来影响
|
|
|
+ if (StringUtils.isNotEmpty(renameResult.getSchemaName())) {
|
|
|
+ schemaName0 = renameResult.getSchemaName();
|
|
|
}
|
|
|
|
|
|
- tableName = result.getTableName();
|
|
|
+ tableName = renameResult.getTableName();
|
|
|
|
|
|
if (StringUtils.isNotEmpty(tableName)) {
|
|
|
// 如果解析到了正确的表信息,则根据全名进行清除
|
|
|
- tableMetaCache.clearTableMeta(schemaName, tableName);
|
|
|
+ tableMetaCache.clearTableMeta(schemaName0, tableName);
|
|
|
} else {
|
|
|
// 如果无法解析正确的表信息,则根据schema进行清除
|
|
|
- tableMetaCache.clearTableMetaWithSchemaName(schemaName);
|
|
|
+ tableMetaCache.clearTableMetaWithSchemaName(schemaName0);
|
|
|
}
|
|
|
}
|
|
|
}
|