일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 위키백과
- 부트스트랩
- 개발일지
- JWT
- 노드 윈스턴
- MongoDB
- 웹 스크래핑(크롤링)
- OpenAPI
- 4주차
- post
- nginx
- 3주차
- db
- 스파르타코딩클럽
- Sequelize
- 2주차
- 숙제
- 1주차
- SQL
- node winston
- cors
- 5주차
- NoSQL
- 항해99
- HTTPS
- Node.js
- Get
- Transaction
- 트랜잭션
- 비동기
- Today
- Total
얼음꽃의 일지
[JS] sequelize transaction commit, rollback 잘못 걸었을때 본문
지난 글에서 sequelize transaction 을 직접 거는글을 올려놨었는데요.
반대로 commit, rollback 이 잘못넣었거나 오류가 생겼을때 현상을 알려드릴려고 합니다.
1. commit 후 rollback 이 붙어있는 경우
const db = require('../../모델 위치');
exports.test = async (req, res) => {
const transaction = await db.sequelize.transaction();
await transaction.commit();
await transaction.rollback();
return res.json(200);
};
이런경우 나오는 에러는 다음과 같습니다.
Error: Transaction cannot be rolled back because it has been finished with state: commit
commit한 후에 rollback 을 할 수가 없다는 뜻이죠.
2. rollback 후 commit 이 붙어있는 경우
const db = require('../../모델 위치');
exports.test = async (req, res) => {
const transaction = await db.sequelize.transaction();
await transaction.rollback();
await transaction.commit();
return res.json(200);
};
이런경우 나오는 에러는 다음과 같습니다.
Error: Transaction cannot be committed because it has been finished with state: rollback
rollback 한 후에 commit을 할 수가 없다는 뜻이죠.
즉, transaction을 한번 완료를 하게 되면 또 그 transaction을 건들 수가 없죠.
이렇게 붙어 쓰지 않고 서버 에러 아니면 코드 오류로 인해서 transaction을 건드리게 되면 위와 같은 현상이 나올 수 있습니다.
Error: Transaction cannot be committed back because it has been finished with state: commit
Error: Transaction cannot be rolled back because it has been finished with state: rollback
이렇게 두가지 에러가 나오는 경우는 두번 commit 하거나 rollback 하는 경우 인데 이럴때는 동기, 비동기 로 인해 코드가 꼬였거나 for문 안에 넣어놔서 여러번 인식되거나 서버 문제로 인해 인식이 잘못되면 발생 가능합니다.
항상 테스트를 진행해보고 잘 썼는지 체크하는게 최고입니다.
'잡다한 지식' 카테고리의 다른 글
[JS] superagent 사용법 (0) | 2023.11.03 |
---|---|
[JS] api 만들었을때 오래걸리는 현상 확인법 (0) | 2023.11.02 |
[JS] sequelize findAndCountAll 의 활용성 (1) | 2023.10.31 |
[JS] 사업자등록번호 확인 api 연결하기 (0) | 2023.10.30 |
[JS] PHP로 다시 serialize하기 위해 만든 함수 (0) | 2023.10.30 |