Table 'reservation_db.notifications' doesn't exist 오류.
Hibernate가 notifications 테이블에 외래키를 생성하려고 했는데 테이블이 없어서 문제가 발생했다.
먼저는 Notification 엔티티 클래스가 올바르게 구성되어 있는지 확인했다.
잘 만들어져 있는 것 같은데 왜 문제가 생기는지 잘 모르겠다.
애플리케이션 설정에서 spring.jpa.hibernate.ddl-auto가 'update'로 되어 있는지 알지만 혹시나 해서 다시 체크했다.
임시로 'create-drop'으로 변경할 수도 있었는데 그러면 데이터가 다 날아가는 게 싫어서 그냥 수동으로 테이블을 추가해주기로 했다.
Docker MySQL 컨테이너에 접속하여 직접 SQL 명령으로 notificatios 테이블을 생성하는 방법을 사용했다:
CREATE TABLE notifications (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT NOT NULL,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
type VARCHAR(50) NOT NULL,
reference_id BIGINT,
`read` BIT(1) NOT NULL DEFAULT 0,
created_at DATETIME,
FOREIGN KEY (user_id) REFERENCES users (id)
);
테이블을 수동으로 생성한 후 애플리케이션을 재시작하니 문제가 해결되었다.
MS 최종 프로젝트에서 Django Migration 이슈들이 떠오르며....
// 주요 코드 스냅샷
@Transactional
public ReservationApprovalDto.ApprovalResponse processReservationApproval(
Long reservationId, Long partnerId, ReservationApprovalDto.ApprovalRequest request
) {
// ... 기존 코드 ...
// 알림 생성
notificationService.createReservationStatusNotification(
processedReservation.getUser().getId(),
processedReservation.getId(),
processedReservation.getStore().getName(),
request.getApproved(),
message,
request.getRejectionReason()
);
// ... 이하 생략 ...
}