系统迁移,运维购买的服务器区分大小写(原系统不区分),导致需要新增springbatch的支持表,因为从本地直接copy的数据库表字段,都是空表。启动任务时,一直提示主键冲突。排查后,发现
有三个表是需要有原始数据的,batch_job_execution_seq,batch_step_execution_seq,batch_job_seq,记录下一个主键。
系统迁移,运维购买的服务器区分大小写(原系统不区分),导致需要新增springbatch的支持表,因为从本地直接copy的数据库表字段,都是空表。启动任务时,一直提示主键冲突。排查后,发现有三个表是需要有原始数据的,batch_job_execution_seq,batch_step_execution_seq,batch_job_seq,记录下一个主键。...
java
.sql.SQLIntegrityConstraintViolationException: Duplicate entry '0' for key 'PRIMARY'
原因是未对数据进行初始化
INSERT INTO
BATCH
_STEP_EXECUTION_SEQ (
ID
, UNIQUE_KEY) SELECT
SELECT
0 AS
ID
,
一般公司都有DBA,DBA极有可能开启了Safe mode,也就是不支持不带索引条件过滤的update操作。
而
Spring
Batch
/Cloud Task就有一张表 JOB_SEQ或者 TASK_SEQ的表,只有一条数据,也无法完成update操作。
Could not
increment
ID
for
BATCH
_JOB_SEQ sequence table; nest...
Spring
Batch
提供了Job的执行能力,其本身不是一个定时的调度框架,因此可以将定时调度框架和
Spring
Batch
结合起来完成定时任务。
Spring
本身提供了一个轻量级的调度框架
Spring
scheduler。
Spring
scheduler使用非常简单,只需要完成2步即可完成简单的定时调度功能:
(1)定义一个scheduler,给scheduler提供执行定时任务的线程。
(2)定义需要定时操作的方法和调度周期。
一、项目结构
二、代码实现
> page_
id
bigint comment '页面
ID
',
> page_name string comment '页面名称',
> page_url string comment '页面URL'
mysql启动的时候提示:
2022-01-17T08:46:30.812801Z 0 [Warning] Could not increase number of max_open_files to more than 1024 (request: 65535)
2022-01-17T08:46:30.812878Z 0 [Warning] Changed limits: max_connections: 214 (requested 9240)
2022-01-17T08:46:30.812885Z 0
-- do not edit this file
--
BATCH
JOB 实例表 包含与aJobInstance相关的所有信息
-- JOB
ID
由
batch
_job_seq分配
-- JOB 名称,与
spring
配置一致
-- JOB KEY 对job参数的MD5编码,正因为有这个字段的存...
Oracle 的
主键
并不一定是
自增
的,它可以由用户手动指定或者使用序列(Sequence)生成。在 Oracle 中创建
主键
时,可以指定
主键
列的数据类型为 NUMBER,并将
主键
列的值设置为通过序列生成的值。这样,每当插入一条数据时,
主键
列的值就会自动从序列中获取,保证每个记录的
主键
值唯一而不重复。
当然,Oracle 也支持使用
自增
主键
,通过定义一个
自增
列(
ID
ENTITY COLUMN),可以让 Oracle 自动生成
主键
值。但需要注意的是,
自增
列在 Oracle 12c 之前的版本中并不支持,需要通过序列来实现
自增
功能。同时,
自增
列也有一些限制,例如只能定义在表的最后一列,不能定义在分区表中等。
T(n)=2T(n/2)+n=o(nlogn)
cnmelo: