django模型创建导致完整性错误1062
我有一个简单的模型,当我使用objects.create时,我得到的是IntegrityError(1062,“键'PRIMARY'的重复条目'96119') 我搜索了类似的问题,但我的案例没有任何唯一字段,也没有试图操纵ID字段。。create命令很简单:django模型创建导致完整性错误1062,django,django-models,Django,Django Models,我有一个简单的模型,当我使用objects.create时,我得到的是IntegrityError(1062,“键'PRIMARY'的重复条目'96119') 我搜索了类似的问题,但我的案例没有任何唯一字段,也没有试图操纵ID字段。。create命令很简单: TimelineQuestion.objects.create(alg_type=alg_str, alg_score=0, snippet=rep, child=self) 我做错了什么?我可以很容易地复制,所以它与数据库无关 模型如下
TimelineQuestion.objects.create(alg_type=alg_str, alg_score=0, snippet=rep, child=self)
我做错了什么?我可以很容易地复制,所以它与数据库无关
模型如下:
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
我设法找到了它
在我的中间件中,当处理请求时,我添加了一个“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()
什么是
child=self
?它是在类child的方法下创建的。。这不是原因