开发者社区> 问答> 正文

BUG: 配置 mapAll: true 时出现的bug

提问257.png

我配置的是 mapAll: true

如果数据库的字段是大写的 ,比如:personName 那么会出现下面的错误,主要是字段被转换成了小写:

提问258.png

原提问者GitHub用户silently9527

展开
收起
古拉古拉 2023-05-08 14:32:44 73 0
2 条回答
写回答
取消 提交回答
  • 最新版的已经解决

    原回答者GitHub用户rewerma

    2023-05-09 18:00:16
    赞同 展开评论 打赏
  • 根据您提供的信息,似乎在使用 mapAll: true 配置时,Canal 将数据库字段名转换为小写,导致在处理大写字段名时出现问题。

    解决此问题的一种方法是将 mapAll 配置设置为 false,并手动映射大写字段名。例如,您可以在 instance.properties 文件中添加以下配置:

    canal.instance.filter.regex=.*\\..*
    canal.instance.filter.black.regex=mysql\\.slave_.*,mysql\\.binlog_.*
    canal.instance.filter.druid.ddl=false
    canal.instance.filter.table.error.log.enable=true
    canal.instance.filter.table.error.log.include=your_database.your_table
    canal.instance.filter.field=your_database.your_table:personName
    

    这将手动映射大写字段名 personName

    另外,您也可以尝试使用 mapUnderscoreToCamelCase 配置来处理大写字段名。在 instance.properties 文件中添加以下配置:

    canal.instance.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000;mapUnderscoreToCamelCase=true
    
    2023-05-08 15:32:40
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载