3

나는 django 프레임 워크와 함께 프로젝트 작업을하고 있으며 컨트롤 버전 시스템을 사용하여 코드를 다른 사람들과 동기화합니다. 그러나 나는 데이터베이스로 어떻게 작업 하는지를 모른다. django에서 프로젝트에 참여한 모든 사람들은 장고 모델을 변경하고 'syncdb'에게 db와 모델 오브젝트를 동기화하도록 지시 할 수 있습니다. 하지만 다른 사람들은이 변경 사항에 대해하지 않으며 코드 개정이 작동하지 않을 수 있습니다. 제발,이 문제를 해결할 수있는 몇 가지 방법을 말해주십시오 (아마도 다른 DB 또는 다른 것).데이터베이스 및 버전 관리 시스템

감사합니다, 내 영어 변명 :)

답변

4

당신은 실제로 프로젝트에 사람들에게 이야기해야합니다.

누군가가 데이터베이스 모델을 변경하면 실제로 다른 사람들에게 변경 사항을 알려야합니다. 이것은 장고 문제가 아닙니다.

Django가없는 SQL 데이터베이스를 생각해보십시오. DBA 드롭이 테이블 일 때 모든 사람들에게 데이터베이스를 변경했다고 말해야합니다. 그렇지 않으면 테이블을 사용하는 모든 프로그램이 중단됩니다.

모델 정의는 특별하며이를 변경할 수있는 사람은 누구에게나 알려야합니다.

0

이동하려는 소리가납니다. 예를 들어

: 또한 실제로 스키마가 예상대로하는지 테스트 기능 단위 테스트를 추가 할 수 있습니다 http://www.aswmc.com/dbmigration/

, 테스트가 실패 그런 식으로, 당신이 스키마 변경이라고 볼 수있다, 앱의 다른 부분에 영향을 줄지 여부를 감사하십시오. 그렇지 않은 경우 새 스키마를 고려하여 테스트를 수정하십시오.

+0

syncdb'가하는 일 '즉. 그의 문제는 프로그래머가 그것을 실행하는 것을 잊어 버리는 것이다. –

+0

기존 데이터베이스 덤프가있는 것처럼 들리지만 스키마가 변경되면 데이터베이스가 일치하지 않게됩니다. 데이터베이스가 일관성을 유지할 수있는 방법을 원했던 것 같습니다.이 마이그레이션 + 기능 테스트. 기능 테스트를 통해 사용자는 무엇이 잘못 됐는지를 적극적으로 파악해야합니다. – ashchristopher

3

Verison 제어하에 DB의 초기 백업이 있어야합니다. 그리고 나서 모든 수정 스크립트를 동일한 버전 제어 도구에 넣어야합니다. 이런 식으로 뭔가 :

/데이터베이스 (저장소)에

  • 초기 백업
  • Script1_date.sql
  • Script2_date.sql

...

+0

이것은 본질적으로 db 마이그레이션입니다. – ashchristopher

1

나 ' 너의 문제를 이해하지 못한다. Django에서 syncdb는 새로운 테이블 만 생성한다는 것을 기억하십시오. 기존 테이블을 변경하지 않습니다.

예를 들어 새 필드를 추가하면 syncdb는 아무 것도하지 않습니다.

1

내가 궁금한데 ... MDF 및 LDF 파일을 소스 제어에 배치하면 어떻게됩니까? 물론 실제로

+0

MDF는 바이너리 파일이므로 개정판 사이의 변경 내용을보기에는 차이가 없습니다 ... –

1

... 테이블이 비어 있고 방금 데이터베이스의 구조를 가지고있는 경우, 대안을보고, 나는 아무도 것 같다 사우스

http://south.aeracode.org/

언급 없다는 것을 종종 놀랍군요 거기서 최고의 마이 그 레이션 애플 리케이션이 될거야 ... 아마 내가 뭔가를 놓치고있어,하지만 난 꽤 좋은 일을 찾을 ...

관련 문제