users.neighborhood_id
컬럼에 unique constraint violation 에러 발생data.sql
내 INSERT 데이터가 중복됨 (초기화 쿼리 누락)data.sql
상단에 DELETE FROM
구문 추가하여 기존 데이터 초기화 후 INSERT 진행ERROR: duplicate key value violates unique constraint "users_neighborhood_id_key"
Detail: Key (neighborhood_id)=(1) already exists.
—> users 테이블에 (neighborhood_id) 컬럼에 unique 제약조건이 걸려있는데 → 중복 값이 들어갔다
👉 현재 data.sql 에 DELETE FROM 이 없음 → 기존 데이터가 남아 있음 → 새로 insert 시도 → 중복 에러 발생
→ 이전에 DB 에 직접 테스트 insert 하거나 다른 버전의 data.sql 이 실행되었고
→ 그 상태에서 다시 Spring Boot 실행하면서 동일한 neighborhood_id=1 insert 시도
→ → 중복 발생
→ Spring Boot 는 기본 설정에서 application run 시마다 data.sql 을 실행함
→ 근데 DELETE FROM 이 없으면 → 기존 데이터 남아있고 → INSERT 가 또 실행됨 → 중복 발생
1️⃣ 첫 번째 Neighborhood insert → id = 1 생성됨:
INSERT INTO neighborhoods (...) VALUES (...), (...);
→ 첫 번째 row → id = 1 → Yeoksam-dong
2️⃣ User insert 에서 Alice → neighborhood_id = 1 사용:
('Alice', 'alice@example.com', ..., 'USER', 1),
3️⃣ 하지만 에러 로그에 따르면 → 이미 이 neighborhood_id = 1 로 users row 가 하나 있었던 것 같음 (중복 insert 됨)
👉 data.sql 맨 위에 "초기화 (DELETE FROM)" 구문 추가하면 해결됨 —> build/resources/main/data.sql
👉순서가 중요 — Foreign Key 제약조건 고려해서 수정
-- 🚩 0. 초기화 순서 (FK 고려 순서 중요!)
DELETE FROM comments;
DELETE FROM posts;
DELETE FROM groups;
DELETE FROM users;
DELETE FROM neighborhoods;
-- 1. Neighborhood 데이터
INSERT INTO neighborhoods (city_name, district_name, ward_name, lat, lng, is_verified)
VALUES
('Seoul', 'Gangnam-gu', 'Yeoksam-dong', 37.501274, 127.039585, true),
('Busan', 'Haeundae-gu', 'U-dong', 35.1631, 129.1635, true);
-- 2. User 데이터
INSERT INTO users (name, email, password, birth_date, gender, address, phone, image_url, provider, provider_id, role, neighborhood_id)
VALUES
('Alice', 'alice@example.com', 'Password123@', '1995-05-10', 'F', 'Seoul, Gangnam-gu', '010-1234-5678', NULL, 'LOCAL', NULL, 'USER', 1),
('Bob', 'bob@example.com', 'securepw', '1990-10-22', 'M', 'Busan, Haeundae-gu', '010-8765-4321', NULL, 'LOCAL', NULL, 'USER', NULL);
-- 3. Group 데이터
INSERT INTO groups (
name, description, access, type, interest, is_neighborhood_auth_required, leader_id, neighborhood_id)
VALUES
('Hiking Club', 'Group for weekend hikes', 'PUBLIC', 'ONLINE', 'STUDY', true, 1, 1),
('Book Lovers', 'Discussing books monthly', 'PRIVATE', 'OFFLINE', 'EXERCISE', false, 2, NULL);
-- 4. Post 데이터
INSERT INTO posts (
group_id, user_id, content, reserve_at, is_notice)
VALUES
(1, 1, '내용 1번', null, false),
(1, 2, '내용 2번', null, false);
-- 5. Comments 데이터
INSERT INTO comments (
post_id, user_id, content, parent_id
) VALUES
(1, 1, '첫 번째 댓글입니다.', NULL),
(1, 2, '첫 번째 댓글에 대한 대댓글입니다.', 1),
(2, 1, '두 번째 게시글의 댓글입니다.', NULL),
(2, 2, '두 번째 게시글 댓글에 대한 대댓글입니다.', 3);
→ 단독으로 넣으면 FK 에러날 수 있음 → 위쪽 테이블들부터 순서대로 초기화
so, 전체 순서로 DELETE FROM 진행
그래서 반드시 상위 → 하위 순서로 삭제해야 에러 안 남!