>  기사  >  데이터 베이스  >  MySQL에서 콘텐츠 유형 충돌로 인해 Django Fixture가 로드되지 않는 이유는 무엇입니까?

MySQL에서 콘텐츠 유형 충돌로 인해 Django Fixture가 로드되지 않는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-24 17:43:12569검색

Why Do My Django Fixtures Fail to Load with Contenttype Conflicts in MySQL?

여러 애플리케이션 콘텐츠 유형으로 인한 Django 픽스처 로드 문제

Django 픽스처를 MySQL 데이터베이스에 로드하려고 하면 콘텐츠 유형 충돌이 발생할 수 있습니다. 이 문제는 대상 애플리케이션이 다른 앱의 테이블에 의존하는 경우가 많기 때문에 특정 애플리케이션의 데이터를 격리하려고 할 때 발생합니다.

이 문제를 해결하려면 일반적으로 필요한 모든 테이블이 나올 때까지 dumpdata 명령에 추가 앱을 포함하는 것이 좋습니다. 설명됩니다. 그러나 이 경우 "fixture.json" 파일이 생성되지만 데이터를 테스트 픽스처로 로드하려고 시도하면 기본 키 값 충돌로 인해 제약 조건 위반이 발생합니다.

Django 문서에서는 덤프를 제안하지만 contenttypes 앱을 사용하면 이미 이 작업을 수행하고 있음을 나타냅니다. Django Issue Tracker에 제공된 권장 해결 방법으로는 문제가 해결되지 않는 것 같습니다.

이 문제에 대한 잠재적인 해결책 중 하나는 dumpdata 명령을 사용할 때 "--natural" 플래그를 활용하는 것입니다. 그렇게 함으로써 Django는 "자연 키"라고도 알려진 보다 내구성 있는 형식을 사용하여 외래 키를 나타냅니다. 예를 들어 "Permission.id" 대신 "Permission.codename"이 사용되고 "User.id" 대신 "User.username"이 사용됩니다.

"--natural" 플래그 사용 외래 키를 보다 강력하게 표현하고 픽스처를 로드할 때 충돌을 해결할 수 있습니다.

위 내용은 MySQL에서 콘텐츠 유형 충돌로 인해 Django Fixture가 로드되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.