2010-05-12 3 views
1

데이터를 이동하는 시간을 절약하기 위해 일부 모델을 절인하고 파일로 덤프했습니다. 그런 다음 동일한 정확한 모델을 사용하여 다른 데이터베이스에 다시로드했습니다. 저장은 잘 작동하고 객체는 내가 원했던 오래된 ID를 유지했습니다. 그러나 새 객체를 저장할 때 nextval 오류가 발생합니다.절인 된 데이터에서 로딩하면 새로운 저장으로 인해 데이터베이스 오류가 발생합니다.

포스트 그레스와 잘 어울리지 않아서 기존 데이터를 유지하면서 새로운 데이터를 계속 추가 할 수있는 오래된 레코드를 보관할 수있는 방법을 모르겠습니다.

덕분에, 토마스

답변

2

나는 당신이 당신의 ID 필드를 autoincrementing에 사용되는 순서에 대해 이야기하고 있다고 생각합니다.

select max(id)+1 from YOURAPP_YOURMODEL; 

을하고이 명령의 값을 사용하여 : :

여기에 가장 쉬운 해결책은 "psql의"쉘에있을 것입니다

alter sequence YOURAPP_YOURMODEL_id_seq restart with MAX_ID_FROM_PREV_STATEMENT; 

트릭을해야한다고.

+0

트릭을 수행했습니다. 통찰력에 감사드립니다! –

3

sqlsequencereset이라는 시퀀스 재설정 SQL을 인쇄하는 django 명령이 실제로 있습니다.

$ python manage.py sqlsequencereset issues 
BEGIN; 
SELECT setval('"issues_project_id_seq"', coalesce(max("id"), 1), max("id") IS NOT null) FROM "issues_project"; 
COMMIT; 
관련 문제