2011-12-19 3 views
0

데이터를 내 장고 포스트그레스 DB에 푸시하는 작은 파이썬 스크립트가 있습니다. django 프로젝트에서 관련 모델을 가져오고 .save 함수를 사용하여 데이터를 문제없이 db에 저장합니다.postgres + GeoDajango - 데이터가 저장되지 않는 것 같습니다.

어제 시스템이 정상적으로 돌아갔다. 오늘 장고가 끝날 때까지 django 프로젝트와 python 스크립트를 여러 번 시작하고 멈추었지만 컴퓨터를 재부팅하거나 전원을 끈 적이 없었습니다.

오늘 나는 데이터가 더 이상 db에 없다는 것을 발견했습니다!

분명히 뭔가를 잊어 버린 것처럼 바보처럼 보이지만 모델에서 save 함수가 호출되면 데이터는 db에 커밋됩니다.

+0

아마 내가 명시 적으로 함수를 호출 할 필요가 postgres를 사용하여 sqlite의 mysql 반대? – michael

+0

내 컴퓨터를 다시 부팅하여 같은 일이 발생했는지 확인했지만 이번에는 데이터가있었습니다. 컴퓨터가 깨끗하게 꺼지지 않았을 수 있습니까? – michael

답변

1

그래서이 질문은 매우 모호하고 효과적으로 문제를 해결하기에 충분한 정보가 없으므로이 답변은 "이 문제를 어디서부터 시작할지"입니다.

이런 일이 다시 발생하면 가장 먼저 할 일은 PostgreSQL의 명령문 로깅을 켜고 들어오는 명령문을 보는 것입니다. 이렇게하면 명령문 시작 및 커밋과 쿼리가 표시됩니다. 이러한 종류의 문제를 쿼리에 액세스하지 않고 문제를 해결하는 것은 사실상 불가능합니다. 찾아야 할 사항에는 누락 된 COMMIT 및 누락 된 문장이 포함됩니다.

그 다음으로해야 할 일은 컴퓨터를 재부팅 한 상황을 살펴 보는 것입니다. 예상 된 커밋 이전에 그렇게했을 가능성이 있습니까? 아니면 시간이지나면서 트랜잭션 로그가 디스크로 플러시되지 않고 전원이 차단 되었습니까?

이 두 가지는 개발 환경에서 db 측의 가능한 모든 원인을 제외해야합니다. PostgreSQL 이전 버전의 프로덕션 환경에서는 시스템이 자동 실행 중이며 xid 순환에 대한 경고가 표시되지 않는지 확인해야합니다. 최신 버전에서는 PostgreSQL이 xid 둘러보기에 접근 할 때 쿼리를 허용하지 않기 때문에 문제가되지 않습니다.