1,创建任务配置数据映射关系时,选择忽略目标端大小写的问题
我的源端和目标端都是用的mysql,忽略大小写后,一直报错:查询不到目标仓库表结构,debug追踪源码后发现再下面的代码:
com.mysql.jdbc.DatabaseMetaData#getTables 4644行
results = stmt
.executeQuery((!DatabaseMetaData.this.conn.versionMeetsMinimum(5, 0, 2) ? "SHOW TABLES FROM " : "SHOW FULL TABLES FROM ")
+ StringUtils.quoteIdentifier(catalogStr, DatabaseMetaData.this.quotedId, DatabaseMetaData.this.conn.getPedantic())
+ " LIKE " + StringUtils.quoteIdentifier(tableNamePat, "'", true));
会去查询目标源数据库中有无该数据库和表
当忽略目标端大小写后,会将目标端数据库名称和表名称全部大写,
SHOW TABLES FROM TEST
LIKE ‘TEST’;
或
SHOW FULL TABLES FROM TEST
LIKE ‘TEST’;
从而找不到目标端的数据库和表。
2,目标端数据库名的中划线问题
之前使用的数据库名称一直是中划线,web开发中没有问题,所以这次使用了中划线,然后就报错
update test-test.test set
1064 - 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 ‘-test.test set xxx’ at line 1
porter同步数据的时候会将数据库名称放在表名前,从而出错。