开发者社区> 问答> 正文

Table 'retl.retl_mark' doesn't exist

pid:1 nid:3 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: StatementCallback; bad SQL grammar [SELECT COUNT(*) FROM retl.retl_mark WHERE id BETWEEN 0 AND 999]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'retl.retl_mark' doesn't exist

原提问者GitHub用户colalemon

展开
收起
古拉古拉 2023-06-14 21:51:12 86 0
3 条回答
写回答
取消 提交回答
  • 值得去的地方都没有捷径

    根据错误提示,这个异常是由于查询语句中的表名 "retl.retl_mark" 不存在导致的。可能的原因是该表没有被正确创建或者已经被删除。

    你需要进一步检查是否正确创建了该表,并确保在查询语句中使用了正确的表名。如果表确实存在,你可以检查数据库的连接和权限是否设置正确,并确保查询语句中的表名是正确的。

    2023-06-15 18:22:27
    赞同 展开评论 打赏
  • 这个错误信息显示了一个SQL语句查询了一个名为'retl.retl_mark'的表,但是数据库中并不存在这个表。因此,你需要检查一下该表是否存在,如果不存在,你需要创建这个表。你可以使用MySQL的命令行工具或者图形化界面工具来进行操作,具体步骤如下:

    1. 打开MySQL的命令行工具或者图形化界面工具。

    2. 连接到你的MySQL数据库。

    3. 在数据库中执行以下SQL语句来创建'retl.retl_mark'表:

    CREATE TABLE retl.retl_mark (
      id int(11) NOT NULL AUTO_INCREMENT,
      -- 其他列定义
      PRIMARY KEY (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    1. 确认表已经创建成功,可以使用以下SQL语句来查询该表是否存在:
    SHOW TABLES LIKE 'retl.retl_mark';
    
    1. 如果表已经存在,则可能是该表被删除或者重命名了,你需要更新你的应用程序代码以反映这些更改。
    2023-06-15 10:09:36
    赞同 展开评论 打赏
  • 说明:该脚本为双A机房数据库同步的初始化SQL,如无该需求请忽略之,注意修改密码 /* 供 otter 使用, otter 需要对 retl.* 的读写权限,以及对业务表的读写权限

    创建database retl / CREATE DATABASE retl; / 2. 用户授权 给同步用户授权 / CREATE USER retl@'%' IDENTIFIED BY 'retl'; GRANT USAGE ON . TO retl@'%'; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO retl@'%'; GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON retl. TO retl@'%'; /* 业务表授权,这里可以限定只授权同步业务的表 */ GRANT SELECT, INSERT, UPDATE, DELETE ON . TO retl@'%';

    /* 3. 创建系统表 */ USE retl; DROP TABLE IF EXISTS retl.retl_buffer; DROP TABLE IF EXISTS retl.retl_mark; DROP TABLE IF EXISTS retl.xdual;

    CREATE TABLE retl_buffer ( ID BIGINT(20) AUTO_INCREMENT, TABLE_ID INT(11) NOT NULL, FULL_NAME varchar(512), TYPE CHAR(1) NOT NULL, PK_DATA VARCHAR(256) NOT NULL, GMT_CREATE TIMESTAMP NOT NULL, GMT_MODIFIED TIMESTAMP NOT NULL, CONSTRAINT RETL_BUFFER_ID PRIMARY KEY (ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    CREATE TABLE retl_mark ( ID BIGINT AUTO_INCREMENT, CHANNEL_ID INT(11), CHANNEL_INFO varchar(128), CONSTRAINT RETL_MARK_ID PRIMARY KEY (ID) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

    CREATE TABLE xdual ( ID BIGINT(20) NOT NULL AUTO_INCREMENT, X timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (ID) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

    /* 4. 插入初始化数据 */ INSERT INTO retl.xdual(id, x) VALUES (1,now()) ON DUPLICATE KEY UPDATE x = now();

    原回答者GitHub用户 funnyAnt

    2023-06-14 22:30:15
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

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