장고 Primary Key 오류 질문!

조회수 2463회

코드(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

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

1 답변

  • 에러 로그를 읽어보면

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

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

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

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

    django extensions 라이브러리

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)