개발/Flask, Fastapi
mongoengine NotUniqueError
AimB
2021. 3. 26. 22:25
raise NotUniqueError(message % err)
mongoengine.errors.NotUniqueError: Tried to save duplicate unique keys
(E11000 duplicate key error collection: frated.movie index:
imdbid_1 dup key: { imdbid: null },
full error: {'index': 0, 'code': 11000, 'keyPattern': {'imdbid': 1},
'keyValue': {'imdbid': None}, 'errmsg': 'E11000 duplicate key error collection:
frated.movie index: imdbid_1 dup key: { imdbid: null }'})
Postman을 사용해서 GET, PUT, POST 메소드를 써보는데 다음과 같은 에러가 났다.
또한 데이터베이스에는 900개 가량의 Documents가 있었는데 하나만 남고 나머지는 다 없어졌다.
왜 그런가 하니, Postman에서 테이블 이름을 만들 때 대문자까지 json이랑 같이 해야 오류가 안나서
다 대문자로 바꿔줬는데, 그러다보니 unique key 가 중복됐었다.
>> 3.29 추가 : json 파일의 key값과 동일하게 스키마를 만들면 오류가 나지 않습니다...
unique key 옵션은 안 넣어도 잘 동작하니 Document를 드랍하고 다시 해 보세요.
+ 기존 테이블에서 여러 테이블에 unique key 속성을 넣었던 것도 문제의 원인인 듯 했다.
어차피 데이터를 넣을때 _id가 생성되니
class Movie(db.Document):
Title = db.StringField()
Year = db.IntField()
() 부분에 unique key 속성을 다 제거했다.

그리고 몽고DB compass에서 테이블을 Drop하고 같은 이름으로 새로 생성했다.
그러니 데이터가 더이상 사라지지 않는다!