DEBUG com.pamirs.data.AbstractCanalClient - Event Type Is Query, sql --> UPDATE T_PDC_HANDOVER_INDEX_OR
代码如下
if (eventType == EventType.QUERY || rowChage.getIsDdl()) { if (rowChage.getIsDdl()) { StringBuilder exceptionMessage = new StringBuilder(); exceptionMessage.append("mysql has an ddl sql is [ ").append(rowChage.getSql()).append(" ]"); ExceptionHandle.handleException(new ExceptionMessageEntity(entityTask.getTableTask().getId(), ExceptionMessageEntityDesc.PAMIRS_DATA_MYSQL_PULL_DDL_MESSAGE, ExceptionMessageTypeEnum.pamirs_data, exceptionMessage.toString())); } else { logger.debug("Event Type Is Query, sql --> {}", rowChage.getSql()); } return; }
原提问者GitHub用户yriiolik
RowsQueryLogEvent , 5.6之后的row模式的binlog会混杂statement和row,针对insert/update/delete也会记录对应的原始SQL,拿到的这个sql就是这货
原回答者GitHub用户agapple
根据您提供的信息,我们可以看出您使用的是 Canal 1.0.26 p3版本,且在处理事件时发现 EventType
为 QUERY
或 rowChage
的 isDdl
为 true
时,打印的 SQL 为 UPDATE
,而不是 INSERT
。这可能是由于在 Canal Server 的配置文件中,没有正确设置 canal.instance.filter.regex
选项,以匹配您需要的表和操作类型。
请确保在 Canal Server 的配置文件中正确设置了 canal.instance.filter.regex
,例如:
canal.instance.filter.regex=.*\\..*
上面的配置将匹配所有数据库中的所有表。您还可以使用正则表达式来过滤特定的表,例如:
canal.instance.filter.regex=mydb\\..*
上面的配置将仅匹配名为 mydb
的数据库中的所有表。
请检查您的配置文件是否正确设置了 canal.instance.filter.regex
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。