[ERROR]

SW ENGINEERING/Issue / / 2022. 3. 8. 13:47

스택:

postgresql - flask - sqlalchemy

 

상황:

이미지 파일을 업로드함

1. 어떤 이미지 insert시 (k1,k2로 구분)에 대해 d컬럼에 k1/k2가 입력됨

2. 만약 어떤 이미지 대하여 a, b, c 컬럼값이 동일할경우 d컬럼에 k1일경우 k2가 추가되면 k1/k2로 입력됨 (반대도 동일)

 

에러상태:

2번의 과정을 처리하면서

insert를 해보고 on_confilct_do_update를 처리하여 update가 됨

문제는 insert를 시도해서 conflict가 발생해도 serial id는 자동으로 증가함

 

이를 해결하기 위해 rollback처리도 해보았지만 insert가 되는 순간 auto increse가됨

https://stackoverflow.com/questions/37204749/serial-in-postgres-is-being-increased-even-though-i-added-on-conflict-do-nothing

 

serial in postgres is being increased even though I added on conflict do nothing

I'm using Postgres 9.5 and seeing some wired things here. I've a cron job running ever 5 mins firing a sql statement that is adding a list of records if not existing. INSERT INTO sometable (

stackoverflow.com

 

해결방법:

try-catch를 사용하여 one으로 값을 찾아봄

except NoResultFound가 나오면 insert 시도

아니면 else를 통해 update 구문 실행

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기