Day 50
1. 이미지 삭제 구현
어제 이미지를 S3에 등록하고 DB에 URL을 저장하는 방식으로 이미지를 저장하였다. 오늘은 저장된 이미지를 삭제하거나 수정하는 작업을 했다. 수정도 결국 삭제 후 다시 등록하는 로직을 적용해서 구현해야 할 기능은 삭제였다. DB의 데이터는 쉽게 지울 수 있었으나 S3쪽의 파일은 계속해서 접근 권한이 거부되었다는 에러가 발생헀다. 사용자의 권한을 열었는데도 계속해서 오류가 발생해서 검색을 해보니 접근 키값을 공유하면 아마존 측에서 접근을 제한한다는 글을 봤다.
그래서 확인해보니 깃헙에 application.properties가 공유되었고 거기에 접근 키가 등록되어 있었다. 그래서 그 사용자와 버킷을 삭제하고 다시 만들어서 저장했다. 그리고 application.properties를 gitignore에 등록해서 공유가 안되도록 조치하였다.
그리고 다른 트러블 슈팅도 있었는데 그 내용을 적고 마무리 하겠다.
- 오류명
- java.sql.SQLException: Field 'filename' doesn't have a default value
- 문제점
- 검색해보니 위 에러의 원인은 크게 두가지였다.
- 필드에 디폴트 값을 지정하지 않은 경우, 기본키 생성 전략의 세팅 문제
- 현재 테이블에 filename이라는 컬럼이 존재하지도 않고 id값을 제외하고는 NOT NULL도 없어서 첫번째 경우는 넘어갔다.
- 기본키 전략을 Identity에서 auto로 변경해봤지만 아무런 변화가 없었다.
- 혹시 저장하는 이미지의 파일명에 공백이 있어서 문제가 생기나 싶어서 변경해봤지만 변화가 없었다.
- 해결방법
- DB를 다시 초기화하고 실행해보려고 ddl-auto를 update → create로 변경해서 실행했는데 오류가 해결되었다.
- 확실치는 않지만 기존에 저장된 값의 기본키가 뒤섞이면서 새로운 데이터를 저장하려는데 기본키의 unique특성이 지켜지지 않아서 생긴 문제라고 추측했다.
- filename이라는 필드명은 여전히 미지수
'항해99 > TIL | WIL' 카테고리의 다른 글
| 2023.03.01 (52일) (0) | 2023.03.02 |
|---|---|
| 2023.02.28 (51일) (0) | 2023.03.01 |
| 2023.02.27 (49일) (0) | 2023.02.27 |
| WIL (6주) (0) | 2023.02.26 |
| 2023.02.25 (48일) (0) | 2023.02.26 |