장고 Primary Key 오류 질문!


코드(models.py)

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    schoolid = models.CharField(max_length=5,unique=True,null=False,db_index=True)
    phone_number = models.CharField(max_length=11,unique=True,null=False,db_index=True)

    def __str__(self):
        return self.user.username

migrate 했을 때 오류내용입니다.

django.db.utils.OperationalError : table "mysite_userprofile" has more than one primary key

  • 2016년 08월 09일에 작성됨

  • userprofile이라는 모델에 Primary key를 두개 생성하려고 해서 발생하는 문제로 보이는데요. 적용되는 migration파일의 내용도 같이 올려 주세요.mysite폴더 아래에 migrations아래에 들어있는 파일입니다. 문제가 되는 파일명은 [python manage.py migrate]를 실행하면 `Applying mysite.0004_auto_20160810_0519.`와 같은 형태로 보일거에요    정두식   2016.8.10 14:30     
조회수 223


1 답변


에러 로그를 읽어보면

현재 mysite_userprofile에 하나 이상의 primary key가 존재한다는 문제로 보입니다.

일단 이 문제는 models.py의 문제라기 보다는 database에 문제가 있는걸로 보이는데 아마 테스팅하는 과정에서 db수정 도중에 id 값이 꼬인 것처럼 보이기도 합니다.

두 명의 사람에게 같은 주민등록번호가 부여될 수 없는 것처럼 한 데이터베이스 안에 같은 primary key도 존재해서는 안됩니다. (django에서는 일반적으로 id 값을 primary key로 부여받습니다.)

이를 해결하려면 데이터베이스파일을 삭제한 후에 다시 migrate하는 방법이 있는데 라이브러리를 이용하여 manage.py reset_db명령어로도 해결할 수 있습니다.

django extensions 라이브러리

  • 2016년 08월 13일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close