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 스키마를 변경해야합니다.

 

 

[TIL, 일일 회고] 2024.10.15 - 테이블에서 컬럼 추가하기 (IntelliJ)

개요프로젝트 진행 중 새로운 요구사항으로 인해 이미 배포된 애플리케이션의 엔티티에 새로운 필드를 추가해야 했습니다. 코드상으로는 엔티티를 수정했지만, 실제 RDS의 테이블에는 해당 컬

pixx.tistory.com

 

위 포스팅에서 알아본 IntelliJ IEA에서 제공하는 Modify Table 기능을 활용하면 편리하게 데이터베이스 스키마를 관리할 수 있습니다.

 

(pay_type)::text = ANY ((ARRAY['CARD'::character varying, 'CASH'::character varying, 'POINT'::character varying])::text[])

 

checks를 보면 아직 pay_type이 이전 enum값들중으로만 허용되도록 되어있습니다. 따라서 이 조건을 삭제해야합니다.

 

제약조건을 삭제후 정상적으로 서버가 실행되었습니다.