2017-06-24 24 views
0

私は単純なモデルを持っていますが、objects.createを使用すると、IntegrityError(1062、 "重複するエントリ '96119'のキー 'PRIMARY')が表示されます。私は間違って何をやっているdjangoモデルの作成でIntegrityErrorが発生する1062

TimelineQuestion.objects.create(alg_type=alg_str, alg_score=0, snippet=rep, child=self) 

:createコマンドは、単純な..です

は、私は同様の問題を捜索したが、私の場合は、任意の一意のフィールドを持って、またIDフィールドを操作しようとしないのですか?私は簡単に再現できるので、DBに関連していません。作成

class TimelineQuestion(CommonInfo): 
    alg_type = models.CharField(max_length=32) 
    alg_data = models.TextField(blank=True, null=True) 
    alg_score = models.FloatField() 

    snippet = models.ForeignKey('Snippet') 
    child = models.ForeignKey('Child') 

    last_seen = models.DateTimeField(editable=True, blank=True, null=True) 

フルスタックトレース:

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner 
    41.    response = get_response(request) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/core/handlers/base.py" in _legacy_get_response 
    249.    response = self._get_response(request) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response 
    187.     response = self.process_exception_by_middleware(e, request) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response 
    185.     response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view 
    58.   return view_func(*args, **kwargs) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/rest_framework/viewsets.py" in view 
    83.    return self.dispatch(request, *args, **kwargs) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/rest_framework/views.py" in dispatch 
    483.    response = self.handle_exception(exc) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/rest_framework/views.py" in handle_exception 
    443.    self.raise_uncaught_exception(exc) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/rest_framework/views.py" in dispatch 
    480.    response = handler(request, *args, **kwargs) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/croinc/babycroinc/bc_views/rest.py" in timeline_questions_reshuffle 
    309.   queryset = child.reshuffle_timeline_questions(self.TIMELINE_QUESTIONS_COUNT) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/croinc/babycroinc/bc_models/core.py" in reshuffle_timeline_questions 
    346.   self.generate_question_set(num) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/croinc/babycroinc/bc_models/core.py" in generate_question_set 
    294.     new_questions = self.generate_random_timeline_questions(count_q) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/croinc/babycroinc/bc_models/core.py" in generate_random_timeline_questions 
    508.     questions += [TimelineQuestion.objects.create(alg_type=alg_str, alg_score=0, snippet=rep, child=self)] 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/db/models/manager.py" in manager_method 
    85.     return getattr(self.get_queryset(), name)(*args, **kwargs) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/db/models/query.py" in create 
    394.   obj.save(force_insert=True, using=self.db) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/db/models/base.py" in save 
    806.      force_update=force_update, update_fields=update_fields) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/db/models/base.py" in save_base 
    836.    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/db/models/base.py" in _save_table 
    922.    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/db/models/base.py" in _do_insert 
    961.        using=using, raw=raw) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/db/models/manager.py" in manager_method 
    85.     return getattr(self.get_queryset(), name)(*args, **kwargs) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/db/models/query.py" in _insert 
    1061.   return query.get_compiler(using=using).execute_sql(return_id) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql 
    1099.     cursor.execute(sql, params) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/db/backends/utils.py" in execute 
    65.     return self.cursor.execute(sql, params) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/db/utils.py" in __exit__ 
    94.     six.reraise(dj_exc_type, dj_exc_value, traceback) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/db/backends/utils.py" in execute 
    65.     return self.cursor.execute(sql, params) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/django/db/backends/mysql/base.py" in execute 
    101.    return self.cursor.execute(query, args) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/MySQLdb/cursors.py" in execute 
    205.    self.errorhandler(self, exc, value) 

File "/home/www/public_html/croinc.org/baby-croinc/croinc-baby-croinc.baby-croinc/env/lib/python2.7/site-packages/MySQLdb/connections.py" in defaulterrorhandler 
    36.  raise errorclass, errorvalue 
+0

'child = self'とは何ですか? – zaidfazil

+0

これは、子クラスのメソッドの下で作成されますが、それは原因ではありません – style

答えて

0

が、私はそれを見つけることができた。ここ

がモデルです。

私のミドルウェアでは、リクエストを処理するときに「pre_save」というシグナルを追加しました。この中に、原因となったinstance.save()を追加しました。

def process_request(self, request): 
    .... 
    mark_user_agent = curry(self.mark_user_agent, request.user_agent, request.user) 
    signals.pre_save.connect(mark_user_agent, dispatch_uid=(self.__class__, request,), weak=False) 

def mark_user_agent(self, user_agent, user, sender, instance, **kwargs): 
    ... 
    instance.save() 
関連する問題