开发者社区> 问答> 正文

同步挂起,报与同步无关的表无关表不存在异常

6.png 7.png 5.png

pid:60 nid:1 exception:setl:com.alibaba.otter.node.etl.load.exception.LoadException: java.util.concurrent.ExecutionException: com.alibaba.otter.node.etl.load.exception.LoadException: com.alibaba.otter.node.etl.load.exception.LoadException: com.alibaba.otter.node.etl.load.exception.LoadException: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [update yibai_plan_stock.yibai_amazon_account set account_name = ? , short_name = ? , account_num = ? where ( id = ? )]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'yibai_system.yibai_platform_account_to_bank_account' doesn't exist at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:233) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:603) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:812) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:868) at com.alibaba.otter.node.etl.load.loader.db.DbLoadAction$DbLoadWorker$2.doInTransaction(DbLoadAction.java:625) at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130) at com.alibaba.otter.node.etl.load.loader.db.DbLoadAction$DbLoadWorker.doCall(DbLoadAction.java:617) at com.alibaba.otter.node.etl.load.loader.db.DbLoadAction$DbLoadWorker.call(DbLoadAction.java:545) at com.alibaba.otter.node.etl.load.loader.db.DbLoadAction.doTwoPhase(DbLoadAction.java:462) at com.alibaba.otter.node.etl.load.loader.db.DbLoadAction.doLoad(DbLoadAction.java:275) at com.alibaba.otter.node.etl.load.loader.db.DbLoadAction.load(DbLoadAction.java:161) at com.alibaba.otter.node.etl.load.loader.db.DbLoadAction$$FastClassByCGLIB$$d932a4cb.invoke() at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191) at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:618) at com.alibaba.otter.node.etl.load.loader.db.DbLoadAction$$EnhancerByCGLIB$$80fd23c2.load() at com.alibaba.otter.node.etl.load.loader.db.DataBatchLoader$2.call(DataBatchLoader.java:198) at com.alibaba.otter.node.etl.load.loader.db.DataBatchLoader$2.call(DataBatchLoader.java:189) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

yibai_system.yibai_platform_account_to_bank_account 未配置到任何一个channel中,仅存在于yibai_system 库中

原提问者Github用户 Mycheers

展开
收起
云上静思 2023-06-14 23:52:21 67 0
3 条回答
写回答
取消 提交回答
  • 触发器问题,已解决

    原回答者Github用户 Mycheers

    2023-06-16 15:22:20
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    这是一个异常日志,具体原因需要先了解异常信息的含义。

    首先,可以看到最后一个异常信息是:

    org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [update yibai_plan_stock.yibai_amazon_account set account_name = ? , short_name = ? , account_num = ? where ( id = ? )]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'yibai_system.yibai_platform_account_to_bank_account' doesn't exist

    这个异常信息说的是执行 SQL 时出现语法错误,具体是 update yibai_plan_stock.yibai_amazon_account 这个表中缺少 yibai_platform_account_to_bank_account 这个表,所以无法执行 SQL。

    根据异常信息中提供的其他信息,可以看到这是在进行数据加载(Data Load)时发生的异常:

    com.alibaba.otter.node.etl.load.exception.LoadException: java.util.concurrent.ExecutionException: com.alibaba.otter.node.etl.load.exception.LoadException: com.alibaba.otter.node.etl.load.exception.LoadException:

    这个异常信息表明在数据加载过程中有一些异常,但没有提供具体异常信息。因此,需要进一步分析数据加载的过程,以确定是哪些操作导致了异常。

    2023-06-15 16:49:49
    赞同 展开评论 打赏
  • 根据错误信息,可以看出是在执行更新语句时出现的异常,原因是 yibai_platform_account_to_bank_account 表不存在。

    从错误信息中可以看出,该表未配置到任何一个 channel 中,仅存在于 yibai_system 库中。

    首先,你需要检查一下数据库中是否真的存在 yibai_platform_account_to_bank_account 表,可以使用如下 SQL 语句查询:

    SHOW TABLES LIKE 'yibai_platform_account_to_bank_account';
    

    如果表不存在,你需要先创建该表,可以使用如下 SQL 语句:

    CREATE TABLE yibai_platform_account_to_bank_account (
        id BIGINT NOT NULL AUTO_INCREMENT,
        platform_account_id BIGINT NOT NULL,
        bank_account_id BIGINT NOT NULL,
        PRIMARY KEY (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    

    如果表已经存在,你需要检查一下该表是否配置到了 channel 中,如果没有配置,你需要将该表添加到 channel 中。你可以使用如下 SQL 语句将该表添加到 default channel 中:

    INSERT INTO otter_channel (channel_id, description, parameters) VALUES ('default', '', '{}');
    INSERT INTO otter_channel_parameter (channel_id, parameter_key, parameter_value) VALUES ('default', 'table_exclude_regex', '^(?i)(otter|\\$\\{.*\\}|yibai_platform_account_to_bank_account)$');
    INSERT INTO otter_channel_parameter (channel_id, parameter_key, parameter_value) VALUES ('default', 'table_include_regex', 'yibai_platform_account_to_bank_account');
    

    这样,就可以将 yibai_platform_account_to_bank_account 表添加到 default channel 中,然后重新执行更新语句,应该就不会出现该异常了。

    2023-06-15 08:40:51
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载