From 1463463f1e170d3e1335c8aee89ca3fbd09e1e31 Mon Sep 17 00:00:00 2001 From: agapple Date: Sun, 15 Oct 2017 16:08:29 +0800 Subject: [PATCH] fixed data --- .../resources/example/rds_instance.properties | 1 + .../inbound/mysql/tsdb/DatabaseTableMeta.java | 22 ++++++++++++++++--- .../parse/inbound/TableMetaCacheTest.java | 7 ++---- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/deployer/src/main/resources/example/rds_instance.properties b/deployer/src/main/resources/example/rds_instance.properties index 9712cf93..f04b3832 100644 --- a/deployer/src/main/resources/example/rds_instance.properties +++ b/deployer/src/main/resources/example/rds_instance.properties @@ -1,4 +1,5 @@ ################################################# +# rds openapi binlog canal.instance.rds.open.url=https://rds.aliyuncs.com/ canal.instance.rds.open.accesskey= canal.instance.rds.open.secretkey= diff --git a/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/tsdb/DatabaseTableMeta.java b/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/tsdb/DatabaseTableMeta.java index 3c43e94a..21edb63c 100644 --- a/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/tsdb/DatabaseTableMeta.java +++ b/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/tsdb/DatabaseTableMeta.java @@ -285,6 +285,8 @@ public class DatabaseTableMeta implements TableMetaTSDB { } private boolean compareTableMetaDbAndMemory(MysqlConnection connection, final String schema, final String table) { + TableMeta tableMetaFromMem = memoryTableMeta.find(schema, table); + TableMeta tableMetaFromDB = new TableMeta(); tableMetaFromDB.setSchema(schema); tableMetaFromDB.setTable(table); @@ -292,15 +294,29 @@ public class DatabaseTableMeta implements TableMetaTSDB { ResultSetPacket packet = connection.query("desc " + getFullName(schema, table)); tableMetaFromDB.setFields(TableMetaCache.parserTableMeta(packet)); } catch (IOException e) { + if (e.getMessage().contains("errorNumber=1146")) { + logger.error("table not exist in db , pls check :" + getFullName(schema, table) + " , mem : " + + tableMetaFromMem); + return false; + } throw new CanalParseException(e); } - TableMeta tableMetaFromMem = memoryTableMeta.find(schema, table); boolean result = compareTableMeta(tableMetaFromMem, tableMetaFromDB); if (!result) { - logger.error("compare failed . \n db : " + tableMetaFromDB + " \n mem : " + tableMetaFromMem); - } + String createDDL = null; + try { + ResultSetPacket packet = connection.query("show create table " + getFullName(schema, table)); + if (packet.getFieldValues().size() > 1) { + createDDL = packet.getFieldValues().get(1); + } + } catch (IOException e) { + // ignore + } + logger.error("pls submit github issue, show create table ddl:" + createDDL + " , compare failed . \n db : " + + tableMetaFromDB + " \n mem : " + tableMetaFromMem); + } return result; } diff --git a/parse/src/test/java/com/alibaba/otter/canal/parse/inbound/TableMetaCacheTest.java b/parse/src/test/java/com/alibaba/otter/canal/parse/inbound/TableMetaCacheTest.java index 8a78e246..f9fc0796 100644 --- a/parse/src/test/java/com/alibaba/otter/canal/parse/inbound/TableMetaCacheTest.java +++ b/parse/src/test/java/com/alibaba/otter/canal/parse/inbound/TableMetaCacheTest.java @@ -14,17 +14,14 @@ public class TableMetaCacheTest { @Test public void testSimple() throws IOException { - - MysqlConnection connection = new MysqlConnection(new InetSocketAddress("100.81.153.8", 3308), - "jingwei", - "jingwei"); + MysqlConnection connection = new MysqlConnection(new InetSocketAddress("127.0.0.1", 3306), "root", "hello"); try { connection.connect(); } catch (IOException e) { Assert.fail(e.getMessage()); } - List packets = connection.queryMulti("show create table test.ljh_test; show create table test.user"); + List packets = connection.queryMulti("show create table test.ljh_test"); String createDDL = null; if (packets.get(0).getFieldValues().size() > 0) { createDDL = packets.get(0).getFieldValues().get(1);