'2025/06'에 해당되는 글 2건

IntelliJ/IDEA 내 JDK 설정 확인

  • File > Project Structure > Project > Project SDK
    File > Project Structure > Modules > Module SDK
    File > Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JVM
    모두 Java 17로 설정되어야 합니다.

 

$env:JAVA_HOME="C:\Program Files\OpenLogic\jdk-17.0.14.7-hotspot"
$env:PATH="$env:JAVA_HOME\bin;" + $env:PATH
java -version

728x90

'Spring Boot > IDEA' 카테고리의 다른 글

--add-opens java.base/java.lang=ALL-UNNAMED  (0) 2025.04.11
Spring Boot 테스트 Class 자동 생성 단축키  (0) 2025.04.10
Spring Boot Build 하기  (0) 2025.03.08
IntelliJ IDEA Auto Import 설정  (0) 2025.03.01
Build Gradle Update  (0) 2025.02.27
블로그 이미지

Link2Me

,

mariaDB 에서 PostgreSQL 로 변경하고 나서 데이터를 추가하니 이런 에러가 발생한다.

PK 시퀀스가 자동으로 증가된 값을 인지하지 못해서 생기는 현상이라고 한다.

 

1
2
3
4
5
6
2025-06-04T13:32:47.652+09:00  WARN 22624 --- [mall] [nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 23505
2025-06-04T13:32:47.652+09:00 ERROR 22624 --- [mall] [nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper   : 오류: 중복된 키 값이 "menu_orgchart_pkey" 고유 제약 조건을 위반함
  Detail: (id)=(7) 키가 이미 있습니다.
2025-06-04T13:32:47.658+09:00 ERROR 22624 --- [mall] [nio-8080-exec-6] c.m.s.a.m.a.s.filter.JWTCheckFilter      : JWT Check Failed: Request processing failed: org.springframework.dao.DataIntegrityViolationException: could not execute statement [오류: 중복된 키 값이 "menu_orgchart_pkey" 고유 제약 조건을 위반함
  Detail: (id)=(7) 키가 이미 있습니다.] [insert into menu_orgchart (depth,name,parent_id,textvalues (?,?,?,?)]; SQL [insert into menu_orgchart (depth,name,parent_id,textvalues (?,?,?,?)]; constraint [null]
 

 

해결 방법은 아래와 같다.

PostgreSQL 에 접속한 다음에 해당 DB에 접속한다.

아래 명령어를 한번만 해주면 해결된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
DO $$
DECLARE
    rec RECORD;
BEGIN
    -- SERIAL, BIGSERIAL 컬럼의 시퀀스와 테이블/컬럼 정보를 얻어서
    FOR rec IN
        SELECT
            s.relname AS sequence_name,
            t.relname AS table_name,
            a.attname AS column_name
        FROM
            pg_class s
        JOIN pg_depend d ON d.objid = s.oid
        JOIN pg_class t ON d.refobjid = t.oid
        JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = d.refobjsubid
        WHERE
            s.relkind = 'S'
            AND d.deptype = 'a'
    LOOP
        -- setval을 수행
        EXECUTE format(
            'SELECT setval(''%I'', COALESCE((SELECT MAX(%I) FROM %I), 1))',
            rec.sequence_name,
            rec.column_name,
            rec.table_name
        );
    END LOOP;
END$$;
 

 

 

 

 

 

728x90
블로그 이미지

Link2Me

,