权限已经给了,转换器也按照模板进行编写了,放到了conf\translator路径下了,MySQL大小写不敏感 ,请问下,这是什么问题?
2017-08-13 11:21:54.893 [main] INFO com.taobao.yugong.controller.YuGongInstance - table[SYSTEM.BASE_YD_MSG] start successful. extractor:com.taobao.yugong.extractor.oracle.OracleAllRecordExtractor , applier:com.taobao.yugong.applier.AllRecordApplier, translator:NULL
2017-08-13 11:21:54.943 [YuGongInstance-SYSTEM.BASE_YD_MSG] INFO c.t.y.e.oracle.OracleMaterializedIncRecordExtractor - table[SYSTEM.BASE_YD_MSG] now is CATCH_UP ...
2017-08-13 11:21:55.041 [YuGongInstance-SYSTEM.BASE_YD_MSG] ERROR com.taobao.yugong.controller.YuGongInstance - retry 1 ,something error happened. caused by com.taobao.yugong.exception.YuGongException: table[null.BASE_YD_MSG] is not found
at com.taobao.yugong.common.db.meta.TableMetaGenerator$1.doInConnection(TableMetaGenerator.java:75)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:342)
at com.taobao.yugong.common.db.meta.TableMetaGenerator.getTableMeta(TableMetaGenerator.java:51)
at com.taobao.yugong.applier.IncrementRecordApplier.getInsertSqlUnit(IncrementRecordApplier.java:159)
at com.taobao.yugong.applier.IncrementRecordApplier.getSqlUnit(IncrementRecordApplier.java:138)
at com.taobao.yugong.applier.IncrementRecordApplier.applyOneByOne(IncrementRecordApplier.java:86)
at com.taobao.yugong.applier.MultiThreadIncrementRecordApplier.applyBatch0(MultiThreadIncrementRecordApplier.java:240)
at com.taobao.yugong.applier.MultiThreadIncrementRecordApplier.applyBatch(MultiThreadIncrementRecordApplier.java:175)
at com.taobao.yugong.applier.MultiThreadIncrementRecordApplier.doApply(MultiThreadIncrementRecordApplier.java:104)
at com.taobao.yugong.applier.MultiThreadIncrementRecordApplier.apply(MultiThreadIncrementRecordApplier.java:92)
at com.taobao.yugong.applier.AllRecordApplier.apply(AllRecordApplier.java:60)
at com.taobao.yugong.controller.YuGongInstance$1.processTable(YuGongInstance.java:215)
at com.taobao.yugong.controller.YuGongInstance$1.run(YuGongInstance.java:145)
at java.lang.Thread.run(Unknown Source)
4条答案
按热度按时间yzckvree1#
table[null.BASE_YD_MSG] is not found
mysql连接串指定了schema了么?
jjjwad0x2#
在 TableMetaGenerator.java 中
public static Table getTableMeta(final DataSource dataSource, final String schemaName, final String tableName) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
return (Table) jdbcTemplate.execute(new ConnectionCallback() {
这个地方获取的 sName 老是空的 ,我强行给去了一个值就好了
if (sName == null) {
sName = metaData.getUserName();
}
不知道是不是这个问题。
92vpleto3#
这个应该是oracle和mysql的表名不一致,设置成一样就通过了,但是询问一下windows下如何运行
‘转换逻辑定义’转换器,我这里无法运行。
`public class TBizTripartiteagreementDataTranslator extends AbstractDataTranslator implements DataTranslator {
// record.setSchemaName();
// 2. 字段名字不同
// ColumnValue nameColumn = record.getColumnByName("x");
//
// if (nameColumn != null) {
//
// nameColumn.getColumn().setName("a");
//
// }
// //3.源库多一个字段
// record.removeColumnByName("y");
// ColumnValue aliasNameColumn = record.getColumnByName("alias_name");
// if (aliasNameColumn != null) {
// StringBuilder displayNameValue = new StringBuilder(64);
// displayNameValue.append(ObjectUtils.toString(nameColumn.getValue()))
// .append('(')
// .append(ObjectUtils.toString(aliasNameColumn.getValue()))
// .append(')');
// nameColumn.setValue(displayNameValue.toString());
// }
// 5. 字段类型不同
// ColumnValue amountColumn = record.getColumnByName("amount");
// if (amountColumn != null) {
// amountColumn.getColumn().setType(Types.VARCHAR);
// amountColumn.setValue(ObjectUtils.toString(amountColumn.getValue()));
// }
// // 6. 目标库多了一个字段
// ColumnMeta gmtMoveMeta = new ColumnMeta("gmt_move", Types.TIMESTAMP);
// ColumnValue gmtMoveColumn = new ColumnValue(gmtMoveMeta, new Date());
// gmtMoveColumn.setCheck(false);// 该字段不做对比
// record.addColumn(gmtMoveColumn);
}
`
这个一定要指定路径吗?
rjjhvcjd4#
我也碰到这个问题了,有解决方式吗?