728x90
문제 상황
원래는 결제 타입을 결제를 할 때 선택을 하는 방식이었는데, 토스 페이먼츠에서 선택후 반환되는 응답값을 받아서 저장하는 방식으로 변경했습니다.
따라서 기존의 엔티티 클래스를 수정해야 했습니다.
위와 같이 원래의 Enum 타입에서 String 타입으로 변경을 했습니다.
org.postgresql.util.PSQLException: ERROR: new row for relation "p_payments" violates check constraint "p_payments_pay_type_check"
그런데 엔티티 클래스 변경 후 위와 같은 에러가 발생했습니다.
이 에러는 PostgreSQL의 p_payments 테이블에 대해 pay_type 컬럼에 정의된 CHECK CONSTRAINT 제약 조건을 위반했기 때문에 발생한 것입니다.
문제 해결
데이터베이스의 제약 조건이 여전히 Enum 값을 요구하고 있기 때문에 직접 DB 스키마를 변경해야합니다.
위 포스팅에서 알아본 IntelliJ IEA에서 제공하는 Modify Table 기능을 활용하면 편리하게 데이터베이스 스키마를 관리할 수 있습니다.
(pay_type)::text = ANY ((ARRAY['CARD'::character varying, 'CASH'::character varying, 'POINT'::character varying])::text[])
checks를 보면 아직 pay_type이 이전 enum값들중으로만 허용되도록 되어있습니다. 따라서 이 조건을 삭제해야합니다.
제약조건을 삭제후 정상적으로 서버가 실행되었습니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.10.21 - Spring boot 스케줄러 @Schduled (0) | 2024.10.21 |
---|---|
[TIL, 일일 회고] 2024.10.20 - LocalDate로 정확한 날짜 구하기 (0) | 2024.10.20 |
[TIL, 일일 회고] 2024.10.18 - 서버 사이드 렌더링 적용하기 (0) | 2024.10.18 |
[TIL, 일일 회고] 2024.10.17 - Spring Data JPA의 명명 규칙 (0) | 2024.10.17 |
[TIL, 일일 회고] 2024.10.16 - 1 대 N VS 중간 테이블 고민 (0) | 2024.10.16 |