From fe9e5edf78dfcfafe6e03a452cc24da83df43a71 Mon Sep 17 00:00:00 2001 From: jiucheng Date: Thu, 5 Dec 2019 15:27:18 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=B7=B3=E8=BF=87=E6=97=A0=E4=B8=BB?= =?UTF-8?q?=E9=94=AE=E8=A1=A8=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../otter/node/etl/select/selector/MessageParser.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/node/etl/src/main/java/com/alibaba/otter/node/etl/select/selector/MessageParser.java b/node/etl/src/main/java/com/alibaba/otter/node/etl/select/selector/MessageParser.java index c405d41d..9711015c 100644 --- a/node/etl/src/main/java/com/alibaba/otter/node/etl/select/selector/MessageParser.java +++ b/node/etl/src/main/java/com/alibaba/otter/node/etl/select/selector/MessageParser.java @@ -588,8 +588,12 @@ private EventData internParse(Pipeline pipeline, Entry entry, RowChange rowChang // eventData.setKeys(columns); // } } else { - throw new SelectException("this rowdata has no pks , entry: " + entry.toString() + " and rowData: " - + rowData); +// throw new SelectException("this rowdata has no pks , entry: " + entry.toString() + " and rowData: " +// + rowData); + if (logger.isWarnEnabled()) { + logger.warn("this rowdata has no pks ,schemaName={},tableName={}", eventData.getSchemaName(), eventData.getTableName()); + } + return null; } return eventData; From 80d2630410f5c976609fd014822b3a1a9d8a2a32 Mon Sep 17 00:00:00 2001 From: jiucheng Date: Thu, 5 Dec 2019 16:32:31 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=B7=B3=E8=BF=87=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E8=A1=A8=E6=97=B6=E7=9B=AE=E6=A0=87=E5=BA=93=E6=97=A0=E6=AD=A4?= =?UTF-8?q?=E8=A1=A8=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../otter/node/etl/load/loader/db/DbLoadAction.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/node/etl/src/main/java/com/alibaba/otter/node/etl/load/loader/db/DbLoadAction.java b/node/etl/src/main/java/com/alibaba/otter/node/etl/load/loader/db/DbLoadAction.java index 9f63403f..48777b3b 100644 --- a/node/etl/src/main/java/com/alibaba/otter/node/etl/load/loader/db/DbLoadAction.java +++ b/node/etl/src/main/java/com/alibaba/otter/node/etl/load/loader/db/DbLoadAction.java @@ -366,7 +366,14 @@ public Boolean doInStatement(Statement stmt) throws SQLException, DataAccessExce // 解决当数据库名称为关键字如"Order"的时候,会报错,无法同步 result &= stmt.execute("use `" + data.getDdlSchemaName() + "`"); } - result &= stmt.execute(data.getSql()); + // 跳过删除表时目标库无此表报错 + String sql = data.getSql(); + if (dbDialect instanceof MysqlDialect) { + if (sql.startsWith("DROP TABLE `")) { + sql = "DROP TABLE IF EXISTS" + sql.substring(10); + } + } + result &= stmt.execute(sql); return result; } });