美文网首页
springbootBatch主键冲突异常

springbootBatch主键冲突异常

作者: 楼兰King | 来源:发表于2021-04-27 14:16 被阅读0次

java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '0' for key 'PRIMARY'

原因是未对数据进行初始化

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

建表语句

CREATE TABLE `batch_job_execution` (
    `JOB_EXECUTION_ID` BIGINT (20) NOT NULL,
    `VERSION` BIGINT (20) DEFAULT NULL,
    `JOB_INSTANCE_ID` BIGINT (20) NOT NULL,
    `CREATE_TIME` datetime NOT NULL,
    `START_TIME` datetime DEFAULT NULL,
    `END_TIME` datetime DEFAULT NULL,
    `STATUS` VARCHAR (10) DEFAULT NULL,
    `EXIT_CODE` VARCHAR (2500) DEFAULT NULL,
    `EXIT_MESSAGE` VARCHAR (2500) DEFAULT NULL,
    `LAST_UPDATED` datetime DEFAULT NULL,
    `JOB_CONFIGURATION_LOCATION` VARCHAR (2500) DEFAULT NULL,
    PRIMARY KEY (`JOB_EXECUTION_ID`),
    KEY `JOB_INST_EXEC_FK` (`JOB_INSTANCE_ID`),
    CONSTRAINT `JOB_INST_EXEC_FK` FOREIGN KEY (`JOB_INSTANCE_ID`) REFERENCES `batch_job_instance` (`JOB_INSTANCE_ID`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
 
CREATE TABLE `batch_job_execution_context` (
    `JOB_EXECUTION_ID` BIGINT (20) NOT NULL,
    `SHORT_CONTEXT` VARCHAR (2500) NOT NULL,
    `SERIALIZED_CONTEXT` text,
    PRIMARY KEY (`JOB_EXECUTION_ID`),
    CONSTRAINT `JOB_EXEC_CTX_FK` FOREIGN KEY (`JOB_EXECUTION_ID`) REFERENCES `batch_job_execution` (`JOB_EXECUTION_ID`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
 
CREATE TABLE `batch_job_execution_params` (
    `JOB_EXECUTION_ID` BIGINT (20) NOT NULL,
    `TYPE_CD` VARCHAR (6) NOT NULL,
    `KEY_NAME` VARCHAR (100) NOT NULL,
    `STRING_VAL` VARCHAR (250) DEFAULT NULL,
    `DATE_VAL` datetime DEFAULT NULL,
    `LONG_VAL` BIGINT (20) DEFAULT NULL,
    `DOUBLE_VAL` DOUBLE DEFAULT NULL,
    `IDENTIFYING` CHAR (1) NOT NULL,
    KEY `JOB_EXEC_PARAMS_FK` (`JOB_EXECUTION_ID`),
    CONSTRAINT `JOB_EXEC_PARAMS_FK` FOREIGN KEY (`JOB_EXECUTION_ID`) REFERENCES `batch_job_execution` (`JOB_EXECUTION_ID`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
 
CREATE TABLE `batch_job_execution_seq` (
    `ID` BIGINT (20) NOT NULL,
    `UNIQUE_KEY` CHAR (1) NOT NULL,
    UNIQUE KEY `UNIQUE_KEY_UN` (`UNIQUE_KEY`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
 
CREATE TABLE `batch_job_instance` (
    `JOB_INSTANCE_ID` BIGINT (20) NOT NULL,
    `VERSION` BIGINT (20) DEFAULT NULL,
    `JOB_NAME` VARCHAR (100) NOT NULL,
    `JOB_KEY` VARCHAR (32) NOT NULL,
    PRIMARY KEY (`JOB_INSTANCE_ID`),
    UNIQUE KEY `JOB_INST_UN` (`JOB_NAME`, `JOB_KEY`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
 
CREATE TABLE `batch_job_seq` (
    `ID` BIGINT (20) NOT NULL,
    `UNIQUE_KEY` CHAR (1) NOT NULL,
    UNIQUE KEY `UNIQUE_KEY_UN` (`UNIQUE_KEY`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
 
CREATE TABLE `batch_step_execution` (
    `STEP_EXECUTION_ID` BIGINT (20) NOT NULL,
    `VERSION` BIGINT (20) NOT NULL,
    `STEP_NAME` VARCHAR (100) NOT NULL,
    `JOB_EXECUTION_ID` BIGINT (20) NOT NULL,
    `START_TIME` datetime NOT NULL,
    `END_TIME` datetime DEFAULT NULL,
    `STATUS` VARCHAR (10) DEFAULT NULL,
    `COMMIT_COUNT` BIGINT (20) DEFAULT NULL,
    `READ_COUNT` BIGINT (20) DEFAULT NULL,
    `FILTER_COUNT` BIGINT (20) DEFAULT NULL,
    `WRITE_COUNT` BIGINT (20) DEFAULT NULL,
    `READ_SKIP_COUNT` BIGINT (20) DEFAULT NULL,
    `WRITE_SKIP_COUNT` BIGINT (20) DEFAULT NULL,
    `PROCESS_SKIP_COUNT` BIGINT (20) DEFAULT NULL,
    `ROLLBACK_COUNT` BIGINT (20) DEFAULT NULL,
    `EXIT_CODE` VARCHAR (2500) DEFAULT NULL,
    `EXIT_MESSAGE` VARCHAR (2500) DEFAULT NULL,
    `LAST_UPDATED` datetime DEFAULT NULL,
    PRIMARY KEY (`STEP_EXECUTION_ID`),
    KEY `JOB_EXEC_STEP_FK` (`JOB_EXECUTION_ID`),
    CONSTRAINT `JOB_EXEC_STEP_FK` FOREIGN KEY (`JOB_EXECUTION_ID`) REFERENCES `batch_job_execution` (`JOB_EXECUTION_ID`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
 
CREATE TABLE `batch_step_execution_context` (
    `STEP_EXECUTION_ID` BIGINT (20) NOT NULL,
    `SHORT_CONTEXT` VARCHAR (2500) NOT NULL,
    `SERIALIZED_CONTEXT` text,
    PRIMARY KEY (`STEP_EXECUTION_ID`),
    CONSTRAINT `STEP_EXEC_CTX_FK` FOREIGN KEY (`STEP_EXECUTION_ID`) REFERENCES `batch_step_execution` (`STEP_EXECUTION_ID`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
 
CREATE TABLE `batch_step_execution_seq` (
    `ID` BIGINT (20) NOT NULL,
    `UNIQUE_KEY` CHAR (1) NOT NULL,
    UNIQUE KEY `UNIQUE_KEY_UN` (`UNIQUE_KEY`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;

相关文章

网友评论

      本文标题:springbootBatch主键冲突异常

      本文链接:https://www.haomeiwen.com/subject/ltnurltx.html