om.taobao.yugong.exception.YuGongException: table[null.BASE_YD_MSG] is not found

zengzsys  于 2021-11-29  发布在  Java
关注(0)|答案(4)|浏览(485)

权限已经给了,转换器也按照模板进行编写了,放到了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)

yzckvree

yzckvree1#

table[null.BASE_YD_MSG] is not found

mysql连接串指定了schema了么?

jjjwad0x

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() {

public Object doInConnection(Connection conn) throws SQLException, DataAccessException {
            DatabaseMetaData metaData = conn.getMetaData();
            String sName = getIdentifierName(schemaName, metaData);
            String tName = getIdentifierName(tableName, metaData);

这个地方获取的 sName 老是空的 ,我强行给去了一个值就好了
if (sName == null) {
sName = metaData.getUserName();
}
不知道是不是这个问题。

92vpleto

92vpleto3#

这个应该是oracle和mysql的表名不一致,设置成一样就通过了,但是询问一下windows下如何运行
‘转换逻辑定义’转换器,我这里无法运行。
`public class TBizTripartiteagreementDataTranslator extends AbstractDataTranslator implements DataTranslator {

@Override
public boolean translator(Record record) {
    // 1. schema/table名不同
    // record.setSchemaName("test");
    record.setTableName("t_biz_tripartiteagreement");
    // 2. 字段类型不同:源端varchar到目标端int不用转换

// record.setSchemaName();
// 2. 字段名字不同

// ColumnValue nameColumn = record.getColumnByName("x");
//
// if (nameColumn != null) {
//
// nameColumn.getColumn().setName("a");
//
// }
// //3.源库多一个字段
// record.removeColumnByName("y");

// 4. 字段逻辑处理

// 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);

// ColumnValue text_c = record.getColumnByName("text_c");
    // try {
    // text_c.setValue(new String((byte[]) text_c.getValue(), "GBK"));
    // } catch (UnsupportedEncodingException e) {
    // e.printStackTrace();
    // }
    return super.translator(record);

}

}
`
这个一定要指定路径吗?

rjjhvcjd

rjjhvcjd4#

我也碰到这个问题了,有解决方式吗?

相关问题