[SPRING] 1로 지정하면 Derby Auto가 100 씩 증가합니다.
SPRING1로 지정하면 Derby Auto가 100 씩 증가합니다.
사용 된 쿼리에서 더비 데이터베이스 테이블을 만들려면 기본 열 자동 증분으로 구성됩니다.
CREATE TABLE \"table\" (\n"
+ " \"id\" INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1) NOT NULL,\n"
+ " \"path\" VARCHAR(2000) DEFAULT NULL,\n"
+ " \"downloaded\" BOOLEAN DEFAULT false NOT NULL,\n"
+ " \"retried_times\" SMALLINT DEFAULT 0 NOT NULL,\n"
+ " \"name\" VARCHAR(40),\n"
+ " \"downloaded_date\" TIMESTAMP DEFAULT NULL,\n"
+ " PRIMARY KEY (\"id\")\n"
스프링 jdbc를 통해 행을 삽입하면 100 씩 증가합니다. 쿼리에 오류가 있습니까?
해결법
-
==============================
1.이는 자동 증가 열의 값을 사전 할당하기 때문입니다. Derby는 메모리 내 데이터베이스이므로 데이터베이스가 메모리에 처음로드 될 때 자동 증분 값을 캐시합니다. 그런 다음 자동 증분 열의 미래 값은 데이터베이스를 계속해서 질의하는 대신 캐시를 사용하여 생성됩니다. 데이터베이스가 제대로 종료되지 않으면 캐시에서 사용되지 않는 값이 영원히 손실됩니다.
이는 자동 증가 열의 값을 사전 할당하기 때문입니다. Derby는 메모리 내 데이터베이스이므로 데이터베이스가 메모리에 처음로드 될 때 자동 증분 값을 캐시합니다. 그런 다음 자동 증분 열의 미래 값은 데이터베이스를 계속해서 질의하는 대신 캐시를 사용하여 생성됩니다. 데이터베이스가 제대로 종료되지 않으면 캐시에서 사용되지 않는 값이 영원히 손실됩니다.
이 문제를 해결할 수있는 두 가지 옵션이 있습니다.
대부분의 데이터베이스는 시퀀스에 대해 유사하게 동작합니다. 예를 들어 H2는 정확히 동일한 동작을하지만 Derby처럼 100 대신 32의 캐시 크기를 사용합니다.
from https://stackoverflow.com/questions/31804210/derby-auto-increment-by-100-when-specified-as-1 by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] OS를 평가하는 봄 표현 (0) | 2019.02.20 |
---|---|
[SPRING] Hibernate Criteria API에서 enum 메소드에 대한 질의 (0) | 2019.02.20 |
[SPRING] 봄 데이터 나머지 2.0.0.RELEASE 나누기 코드 RC1 이전에 작동 (0) | 2019.02.20 |
[SPRING] 여러 생성자가 존재할 때 autowire = "constructor"로 종속성 삽입? (0) | 2019.02.20 |
[SPRING] Spring 4.1 @Qualifier가 작동하지 않습니다. (0) | 2019.02.20 |