mysql integrityerror_IntegrityError重复键值违反唯一约束 - Django的/的PostgresInteg

我在问候的跟进,我刚才问的问题中,我试图寻求一个愚蠢/写得不好的MySQL查询转换到PostgreSQL。 我相信,我成功了这一点。 不管怎么说,我使用的是手动从MySQL数据库到Postgres数据库移动数据。 我使用的查询,看起来像这样:

"""

UPDATE krypdos_coderound cru

set is_correct = case

when t.kv_values1 = t.kv_values2 then True

else False

end

from

(select cr.id,

array_agg(

case when kv1.code_round_id = cr.id

then kv1.option_id

else null end

) as kv_values1,

array_agg(

case when kv2.code_round_id = cr_m.id

then kv2.option_id

else null end

) as kv_values2

from krypdos_coderound cr

join krypdos_value kv1 on kv1.code_round_id = cr.id

join krypdos_coderound cr_m

on cr_m.object_id=cr.object_id

and cr_m.content_type_id =cr.content_type_id

join krypdos_value kv2 on kv2.code_round_id = cr_m.id

WHERE

cr.is_master= False

AND cr_m.is_master= True

AND cr.object_id=%s

AND cr.content_type_id=%s

GROUP BY cr.id

) t

where t.id = cru.id

""" % ( self.object_id, self.content_type.id)

)

我有理由相信,这个效果很好。 然而,这导致了一个新的问题。 当试图提交,我从那个指出Django的一个错误:

IntegrityError at (some url):

duplicate key value violates unique constraint "krypdos_value_pkey"

我已经看了几个贴在这里的答复,我还没有完全找到了解决我的问题(虽然相关的问题都进行了一些有趣的阅读使)。 我看到这在我的日志,因为我从来没有显式调用嵌件的Django必须处理它是有趣:

STATEMENT: INSERT INTO "krypdos_value" ("code_round_id", "variable_id", "option_id", "confidence", "freetext")

VALUES (1105935, 11, 55, NULL, E'')

RETURNING "krypdos_value"."id"

但是,试图运行导致重复键错误。 实际的错误是在下面的代码抛出。

# Delete current coding CodeRound.objects.filter(object_id=o.id,content_type=object_type,is_master=True).delete()

code_round = CodeRound(object_id=o.id,content_type=object_type,coded_by=request.user,comments=request.POST.get('_comments',None),is_master=True)

code_round.save()

for key in request.POST.keys():

if key[0] != '_' or key != 'csrfmiddlewaretoken':

options = request.POST.getlist(key)

for option in options:

Value(code_round=code_round,variable_id=key,option_id=option,confidence=request.POST.get('_confidence_'+key, None)).save() #This is where it dies

# Resave to set is_correct

code_round.save()

o.status = '3'

o.save(

我检查了序列和这样的,他们似乎是为了。 在这一点上,我不知道该怎么做 - 我以为这是在Django的最终的东西,但我不知道。 任何反馈将不胜感激!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值