首页 > 其他分享 >Spring Batch BATCH_JOB_INSTANCE 表不存在错误

Spring Batch BATCH_JOB_INSTANCE 表不存在错误

时间:2022-10-11 20:56:24浏览次数:87  
标签:NULL Spring Batch BATCH JOB BIGINT EXECUTION ID

在运行 Spring Batch 项目的时候,提示上面的错误信息:

java.sql.SQLSyntaxErrorException: (conn=12433) Table 'usrealestate.BATCH_JOB_INSTANCE' doesn't exist

 

2022-10-10_18-41-03

 

 

问题和解决

这个问题如果是使用 Hibernate 的会话,没有使用 Spring JPA 的话,通常是不会提示的。

如果你在 application.properties 文件中配置了数据库连接的话,通常会提示上面的错误。

这是因为,如果你没有使用 Spring JPA 的话,Spring Batch 会启用一个 H2 数据库,在这个数据库中,Sping 会对 Batch 需要的配置进行配置。

如果你使用 Spring JPA 的话,你需要 Spring Batch 帮你初始化表。

解决办法就是在项目配置文件中,设置:

spring.batch.initialize-schema=ALWAYS

但是上面的内容会显示为被丢弃了。

在 2.7 的 Spring Boot 版本中,应该使用的配置为:

spring.batch.jdbc.initialize-schema=ALWAYS

2022-10-10_18-45-22

如果使用的是 IDEA 的话,上面的内容会自动提示。

当你第一运行你的项目的时候,数据库会创建下面一堆表。

18:46:43.516 [main] DEBUG o.m.jdbc.client.impl.StandardClient - execute query: CREATE TABLE BATCH_JOB_EXECUTION ( JOB_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY , VERSION BIGINT , JOB_INSTANCE_ID BIGINT NOT NULL, CREATE_TIME DATETIME(6) NOT NULL, START_TIME DATETIME(6) DEFAULT NULL , END_TIME DATETIME(6) DEFAULT NULL , STATUS VARCHAR(10) , EXIT_CODE VARCHAR(2500) , EXIT_MESSAGE VARCHAR(2500) , LAST_UPDATED DATETIME(6), JOB_CONFIGURATION_LOCATION VARCHAR(2500) NULL, constraint JOB_INST_EXEC_FK foreign key (JOB_INSTANCE_ID) references BATCH_JOB_INSTANCE(JOB_INSTANCE_ID) ) ENGINE=InnoDB
18:46:45.087 [main] DEBUG o.m.jdbc.client.impl.StandardClient - execute query: CREATE TABLE BATCH_JOB_EXECUTION_PARAMS ( JOB_EXECUTION_ID BIGINT NOT NULL , TYPE_CD VARCHAR(6) NOT NULL , KEY_NAME VARCHAR(100) NOT NULL , STRING_VAL VARCHAR(250) , DATE_VAL DATETIME(6) DEFAULT NULL , LONG_VAL BIGINT , DOUBLE_VAL DOUBLE PRECISION , IDENTIFYING CHAR(1) NOT NULL , constraint JOB_EXEC_PARAMS_FK foreign key (JOB_EXECUTION_ID) references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID) ) ENGINE=InnoDB
18:46:46.209 [main] DEBUG o.m.jdbc.client.impl.StandardClient - execute query: CREATE TABLE BATCH_STEP_EXECUTION ( STEP_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY , VERSION BIGINT NOT NULL, STEP_NAME VARCHAR(100) NOT NULL, JOB_EXECUTION_ID BIGINT NOT NULL, START_TIME DATETIME(6) NOT NULL , END_TIME DATETIME(6) DEFAULT NULL , STATUS VARCHAR(10) , COMMIT_COUNT BIGINT , READ_COUNT BIGINT , FILTER_COUNT BIGINT , WRITE_COUNT BIGINT , READ_SKIP_COUNT BIGINT , WRITE_SKIP_COUNT BIGINT , PROCESS_SKIP_COUNT BIGINT , ROLLBACK_COUNT BIGINT , EXIT_CODE VARCHAR(2500) , EXIT_MESSAGE VARCHAR(2500) , LAST_UPDATED DATETIME(6), constraint JOB_EXEC_STEP_FK foreign key (JOB_EXECUTION_ID) references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID) ) ENGINE=InnoDB
18:46:47.172 [main] DEBUG o.m.jdbc.client.impl.StandardClient - execute query: CREATE TABLE BATCH_STEP_EXECUTION_CONTEXT ( STEP_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY, SHORT_CONTEXT VARCHAR(2500) NOT NULL, SERIALIZED_CONTEXT TEXT , constraint STEP_EXEC_CTX_FK foreign key (STEP_EXECUTION_ID) references BATCH_STEP_EXECUTION(STEP_EXECUTION_ID) ) ENGINE=InnoDB
18:46:48.295 [main] DEBUG o.m.jdbc.client.impl.StandardClient - execute query: CREATE TABLE BATCH_JOB_EXECUTION_CONTEXT ( JOB_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY, SHORT_CONTEXT VARCHAR(2500) NOT NULL, SERIALIZED_CONTEXT TEXT , constraint JOB_EXEC_CTX_FK foreign key (JOB_EXECUTION_ID) references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID) ) ENGINE=InnoDB
18:46:49.106 [main] DEBUG o.m.jdbc.client.impl.StandardClient - execute query: CREATE TABLE BATCH_STEP_EXECUTION_SEQ ( ID BIGINT NOT NULL, UNIQUE_KEY CHAR(1) NOT NULL, constraint UNIQUE_KEY_UN unique (UNIQUE_KEY) ) ENGINE=InnoDB
18:46:50.080 [main] DEBUG o.m.jdbc.client.impl.StandardClient - execute query: INSERT INTO BATCH_STEP_EXECUTION_SEQ (ID, UNIQUE_KEY) select * from (select 0 as ID, '0' as UNIQUE_KEY) as tmp where not exists(select * from BATCH_STEP_EXECUTION_SEQ)
18:46:50.350 [main] DEBUG o.m.jdbc.client.impl.StandardClient - execute query: CREATE TABLE BATCH_JOB_EXECUTION_SEQ ( ID BIGINT NOT NULL, UNIQUE_KEY CHAR(1) NOT NULL, constraint UNIQUE_KEY_UN unique (UNIQUE_KEY) ) ENGINE=InnoDB
18:46:51.088 [main] DEBUG o.m.jdbc.client.impl.StandardClient - execute query: INSERT INTO BATCH_JOB_EXECUTION_SEQ (ID, UNIQUE_KEY) select * from (select 0 as ID, '0' as UNIQUE_KEY) as tmp where not exists(select * from BATCH_JOB_EXECUTION_SEQ)
18:46:51.316 [main] DEBUG o.m.jdbc.client.impl.StandardClient - execute query: CREATE TABLE BATCH_JOB_SEQ ( ID BIGINT NOT NULL, UNIQUE_KEY CHAR(1) NOT NULL, constraint UNIQUE_KEY_UN unique (UNIQUE_KEY) ) ENGINE=InnoDB
18:46:52.151 [main] DEBUG o.m.jdbc.client.impl.StandardClient - execute query: INSERT INTO BATCH_JOB_SEQ (ID, UNIQUE_KEY) select * from (select 0 as ID, '0' as UNIQUE_KEY) as tmp where not exists(select * from BATCH_JOB_SEQ)

上面的表是根据你当前你数据库配置参数进行创建的。

 

2022-10-10_18-47-47

 

 

如果查看数据库的话,将会看到下面表被创建了。

 

2022-10-10_18-48-55

 

 

Spring Batch 使用数据库作为中间存储介质来存储需要的参数。

 

https://www.ossez.com/t/spring-batch-batch-job-instance/14141

标签:NULL,Spring,Batch,BATCH,JOB,BIGINT,EXECUTION,ID
From: https://www.cnblogs.com/huyuchengus/p/16782507.html

相关文章

  • springboot Druid后台监控功能和过滤
    @ControllerpublicclassDruidConfig{@ConfigurationProperties(prefix="spring.datasource")@BeanpublicDataSourcedruidDataSource(){return......
  • Springboot项目打war,jar包流程
    Springboot项目打jar包流程1、在POM中确定MAVEN打包插件已经引入<build>   <plugins>       <plugin>           <groupId>org.springframework.b......
  • SpringBoot异步调用
    在程序执行时候还有一个瓶颈,串行执行,可以通过使用不同线程类快速提升应用的速度。要启用Spring的异步功能,必须要使用@EnableAsync注解。这样将会透明地使用java.util.conc......
  • springboot2 集成redis
    #redissettingsspring.redis.database=0spring.redis.host=127.0.0.1spring.redis.port=6379spring.redis.password=spring.redis.timeout=5000msspring.redis.let......
  • SpringBoot学习-(二十三)SpringBoot发送邮件
    基本步骤:添加pom文件依赖配置邮件相关书写代码测试添加pom文件依赖<!--springbootmail--><dependency><groupId>org.springframework.boot</groupId><artifactId......
  • SpringBoot学习-(二十四)SpringBoot配置错误页面(404、500等)
    基本步骤:添加错误页面配置书写对应action处理映射添加错误页面配置packagecom.ahut.config;importorg.springframework.boot.context.embedded.ConfigurableEmbeddedServl......
  • Mybatis通用Mapper(springboot环境下使用)
    ​​mapper3通用接口大全​​​:​​https://gitee.com/free/Mapper.git​​1、添加pom文件依赖<!--mapper--><dependency><groupId>tk.mybatis</groupId><artifact......
  • ElasticSearch学习 - (五)SpringBoot集成ElasticSearch5.X
    步骤:添加pom文件依赖配置ElasticSearch使用ElasticSearch的java客户端一、添加pom文件依赖<properties><elasticsearch.version>5.6.4</elasticsearch.version></pr......
  • SpringBoot学习-(十三)SpringBoot中建立WebSocket连接(STOMP)
    STOMP协议介绍STOMP,StreamingTextOrientatedMessageProtocol,是流文本定向消息协议,是一种为MOM(MessageOrientedMiddleware,面向消息的中间件)设计的简单文本协议。它提......
  • 3.0 Spring生命周期源码解析
    Spring最核心的功能之一就是创建对象(IOC)Bean的生命周期指:在spring中,一个Bean的生成和销毁的过程1.生成BeanDefinitionSpring启动先进行扫描,调用org.springframework.c......