开发者社区> 问答> 正文

当库名或表名包含关键字或 - 时抛异常

环境信息

canal 1.1.5-snapshot mysql 5.7

问题描述

当库名或表名包含关键字或 - 时抛异常

步骤重现

库名: canal-client-adapter 表名: xdual rdb yml

dataSourceKey: defaultDS destination: example groupId: g1 outerAdapterKey: mysql1 concurrent: true dbMapping: database: retl table: xdual targetDb: canal-client-adapter targetTable: xdual targetPk: id: id mapAll: true # targetColumns: # id: # x: # etlCondition: "where c_time>={}" commitBatch: 3000 # 批量提交的大小

实际执行情况

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-client-adapter.xdual WHERE 1=2' at line 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_202] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_202] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_202] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_202] at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.48.jar:5.1.48] at com.mysql.jdbc.Util.getInstance(Util.java:408) ~[mysql-connector-java-5.1.48.jar:5.1.48] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944) ~[mysql-connector-java-5.1.48.jar:5.1.48] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3933) ~[mysql-connector-java-5.1.48.jar:5.1.48] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3869) ~[mysql-connector-java-5.1.48.jar:5.1.48] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524) ~[mysql-connector-java-5.1.48.jar:5.1.48] at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2675) ~[mysql-connector-java-5.1.48.jar:5.1.48] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465) ~[mysql-connector-java-5.1.48.jar:5.1.48] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2439) ~[mysql-connector-java-5.1.48.jar:5.1.48] at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1365) ~[mysql-connector-java-5.1.48.jar:5.1.48] at com.alibaba.druid.pool.DruidPooledStatement.executeQuery(DruidPooledStatement.java:230) ~[druid-1.1.9.jar:1.1.9] at com.alibaba.otter.canal.client.adapter.support.Util.sqlRS(Util.java:77) ~[classes/:na] at com.alibaba.otter.canal.client.adapter.rdb.service.RdbSyncService.getTargetColumnType(RdbSyncService.java:420) [client-adapter.rdb-1.1.5-SNAPSHOT-jar-with-dependencies.jar:na] at com.alibaba.otter.canal.client.adapter.rdb.service.RdbSyncService.update(RdbSyncService.java:319) [client-adapter.rdb-1.1.5-SNAPSHOT-jar-with-dependencies.jar:na] at com.alibaba.otter.canal.client.adapter.rdb.service.RdbSyncService.sync(RdbSyncService.java:216) [client-adapter.rdb-1.1.5-SNAPSHOT-jar-with-dependencies.jar:na] at com.alibaba.otter.canal.client.adapter.rdb.service.RdbSyncService.lambda$null$0(RdbSyncService.java:115) [client-adapter.rdb-1.1.5-SNAPSHOT-jar-with-dependencies.jar:na] at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_202] at com.alibaba.otter.canal.client.adapter.rdb.service.RdbSyncService.lambda$sync$1(RdbSyncService.java:115) [client-adapter.rdb-1.1.5-SNAPSHOT-jar-with-dependencies.jar:na] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_202] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_202] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_202] at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_202]

原提问者GitHub用户XuDaojie

展开
收起
山海行 2023-04-27 20:08:29 116 0
1 条回答
写回答
取消 提交回答
  • 可通过以下配置解决

    dataSourceKey: defaultDS destination: example groupId: g1 outerAdapterKey: mysql1 concurrent: true dbMapping: database: retl table: xdual targetDb: 'canal-client-adapter' targetTable: xdual targetPk: id: id mapAll: true commitBatch: 3000 # 批量提交的大小

    原回答者GitHub用户

    2023-04-28 14:38:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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