본문 바로가기
반응형

transaction3

[Prisma] Promise.all과 transaction 동시 사용 시 Transaction API error: Unable to start a transaction in the given time. 에러 발생. 외주 작업을 하면서 추가 의뢰를 받은 기능을 개발하던 중이였다. 해당 기능은 주문이 들어온지 두 달이 지났는데 아직 연결이 안된 접수 건을 조회 해서 취소된 항목 변경해달라는 것. 나는 cron으로 이미 스케줄링 작업을 돌리고 있었기 때문에 cron을 사용하기로 했고 매일 정해진 시간에 조회를 해 업데이트를 하면 된다고 생각했다. 또 이미 주문 취소 함수가 구현이 되어 있었기 때문에 해당 함수를 사용하면 된다고 생각했다. 그리고 문제의 그 코드...  @Cron('0 50 23 * * * ', { timeZone: 'Asia/Seoul' }) async deleteOldOrder() { //예전 데이터 삭제 // 기준 날짜: 현재 날짜에서 2개월 전 const .. 2024. 12. 8.
[Prisma] All elements of the array need to be Prisma Client promises. transaction 에러 해결 거창한건 아니고 내가 보려 만드는 에러 해결법... 기존에 디비 커넥션을 걷어내고 prisma로 마이그레이션 하고 있는 와중에 트랜잭션 처리를 해야되는 상황에 처했다. try,catch,finally로 다 컨트롤 해줘야되던 기존 방식과는 달리 $transaction 함수 하나만 쓰면 되길래 참 편하구나 하고 기존 쿼리를 배열에 넣고 해당 배열을 $transaction 함수에 파라미터로 넘겨주었다. 그랬더니 에러가 났다. 한참 공식문서 뒤적거리다보니 문제를 발견했는데 이렇게 prisma 객체 안에 넣어서 배열에 넣어야 됐는데 나는 그냥 쿼리 문자열을 배열로 넣어서 안됐던 것이였다. 조금만 생각해도 바로 알텐데 참으로 바보 같이 행동해 얻은 에러였다... 2023. 10. 30.
[NestJS]NestJS에서 Transaction(트랜잭션) 활용 프로젝트를 개발하면서 한 객체를 데이터베이스에 넣고 해당 인덱스를 활용하여 또 다른 insert 작업을 해야하는 상황이 발생했다. 만약 중간 단계에서 에러가 난다면 해당 작업 도중 발생한 insert를 모두 되돌려야 하는데 이럴 때 트랜잭션 단위로 묶어서 처리를 해줄 수 있다. 트랜잭션이 무엇인지 정리하고 프로젝트 도중 트랜잭션을 활용한 내용으로 공유하도록 하겠다. 트랜잭션(Transcation) 트랜잭션의 사전적 정의는 시스템에서 사용되는 더 이상 쪼갤 수 없는 업무 처리의 최소 단위라고 말할 수 있다. 데이터베이스에서의 트랜잭션은 데이터베이스 서버에 여러 개의 클라이언트가 동시에 엑세스를 하거나 응용프로그램이 갱신을 처리할 때 중단 될 수 있는 등 데이터 부정합을 방지하고자 할 때 사용한다. 예를 들.. 2023. 1. 27.
반응형