Notice
Recent Posts
Recent Comments
«   2024/11   »
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 30
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

Unique index or primary key violation 본문

Spring/오류

Unique index or primary key violation

빌드이너프 2023. 11. 25. 18:06

고유 인덱스 또는 기본키 위반

Unique index or primary key violation

 

 

src > main > resources에서 data.sql이라는 더미 데이터가 생성되어 있기 때문에 발생한 문제

서버를 재시작할 때마다 더미 데이터를 생성

새로운 게시글을 작성할 때 id를 1번부터 넣게해서 에러가 발생함 => 즉, id가 중복되었기 때문에 발생한 문제

// data.sql

INSERT INTO article(id, title, content) VALUES(1, '가가가가', '1111');
INSERT INTO article(id, title, content) VALUES(2, '나나나나', '2222');
INSERT INTO article(id, title, content) VALUES(3, '다다다다', '3333');

 

// Article.java
package com.example.BoardProject.entity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;

@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity
@Getter
public class Article {

    @Id
    @GeneratedValue
    private Long id;
    @Column
    private String title;
    @Column
    private String content;

}

 

 

해결방법

id 자동 생성 전략을 추가하면 데이터를 생성할 때마다 DB가 알아서 id에 1, 2, 3, 4 등 값을 넣어준다

@GeneratedValue(strategy = GenerationType.IDENTITY)

 

DB가 id를 자동 생성해주기 때문에 data.sql에 입력값으로 준 id 속성과 속성 값 1, 2, 3을 삭제한다

INSERT INTO article(title, content) VALUES('가가가가', '1111');
INSERT INTO article(title, content) VALUES('나나나나', '2222');
INSERT INTO article(title, content) VALUES('다다다다', '3333');