본문 바로가기
프로젝트 - Twogether

23.08.29

by J1-H00N 2023. 8. 29.

h2를 사용한 테스트 코드 작성 중 더미 데이터가 필요할 것 같아 data.sql 파일을 만들어 더미 데이터를 넣으려 했으나 이 sql문이 작동하지 않는 문제가 발생했다.

환경 문제인가 싶어서 이것저것 찾아봐 환경도 수정해 봤으나 변동이 없었다.

sql문을 짤 때 실제 데이터베이스에 있는 필드 중 필요없는 변수들은 입력하지 않았는데 이 문제일 수도 있어 수정해보려 한다.

 

해결!!

Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement

해당 에러는 sql 파일을 테스트에 resources 디렉토리를 구현하지 않고 패키지에 그냥 추가하여 생긴 에러였다.

 

[Column 'board_id' cannot be null] [insert into deck (is_archived,board_id,created_at,modified_at,position,title) values (?,?,?,?,?,?)]

위와 같은 에러 메시지가 동반되었기에 기존 entity에 있던 필드들을 몇몇 구현하지 않아 생긴 문제인 줄 알아 아래처럼 수정하기도 하였으나 변하는 점은 없었다.

CREATE TABLE IF NOT EXISTS users (
    id LONG PRIMARY KEY,
    email VARCHAR(100),
    password VARCHAR(100),
    introduction VARCHAR(100),
    nickname VARCHAR(100),
    role VARCHAR(50)
);

-- 더미 사용자 데이터 삽입
INSERT INTO users (id, email, introduction, nickname, password, role) VALUES
(1, 'user1@mail.com', 'tester', 'tester', 'test1234!', 'USER'),
(2, 'user2@mail.com', 'tester', 'tester', 'test1234!', 'USER'),
(3, 'user3@mail.com', 'tester', 'tester', 'test1234!', 'USER');

 

결국 resources 디렉토리를 구현하여 간단히 해결

 

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "USERS" already exists; SQL statement:

 

 

에러코드를 읽다보니 위와 같은 에러가 있었고, 해당 에러는 USERS 테이블이 이미 존재해서 생기는 오류다.

처음에는 테이블명을 기존 테이블명과 겹치지 않게 수정했으나 그러면 차후 같은 에러가 발생할 수 있고, repository 등과 연동이 안되는 듯 하여 이미 존재하는 테이블은 생성하지 않도록 쿼리문을 수정하였다.

-- 수정 전
CREATE TABLE users

-- 수정 후
CREATE TABLE IF NOT EXISTS users

 

'프로젝트 - Twogether' 카테고리의 다른 글

23.09.18  (0) 2023.09.18
23.08.28  (0) 2023.08.28
23.08.25  (0) 2023.08.25
23.08.24  (0) 2023.08.24
23.08.23  (0) 2023.08.23