使用ABP时报错“UPDATE 语句与 FOREIGN KEY SAME TABLE 约束"FK_dbo.AbpUsers_dbo.AbpUsers_LastModifierUserId"冲突”的解决...

本文详细介绍了在使用ABP框架时遇到的AbpUsers表冲突问题,并提供了清除Cookie的解决方法。通过实例演示,帮助开发者避免因Cookie保存的旧UserId导致的数据库冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ABP理论学习总目录

一步一步使用ABP框架搭建正式项目系列教程

ABP之Module-Zero学习目录


本篇目录

问题

问题的是在下面这种情况下出现的:

我在使用CodeFirst更新了数据库后,然后数据库中产生数据表了,几个表中也都有数据。问题的主要原因是跟AbpUsers表有关的。

一开始AbpUsers表的数据是这样的:
q9mXgdD.png

我直接删除了AbpUsers表中的数据,然后想重新运行一下种子方法,结果再次生成了和之前一样的数据,但是由于Id是自增长的,Id分别变成了3和4。最关键的,是这个表中有个LastModifierUserId字段,该字段保存的是上次登录系统的用户Id。

第二次更新数据库之后,再次登录系统时报错了,详细信息如下:

{"UPDATE 语句与 FOREIGN KEY SAME TABLE 约束"FK_dbo.AbpUsers_dbo.AbpUsers_LastModifierUserId"冲突。该冲突发生于数据库"QrCodeCMSMZ",表"dbo.AbpUsers", column 'Id'。\r\n语句已终止。"}

原因

从提示的错误只能看出“更新数据库时与AbpUsers表的LastModifierUserId字段发生了冲突”,再也得不到其他信息了。

最终,我发现的原因是用户登录时都会将UserId保存到Cookie中,然后再次登录时会将Cookie中的UserId更新到数据库中。由于我之前的UserId是2,保存到Cookie中,然后再次登录时用2更新数据库,但是此时数据库中已经没有UserId为2的用户了,所以就发生了冲突的错误。

本人用的ABP版本是v0.7.5.0。

解决办法

解决办法就是清除Cookie。

在Chrome浏览器中清除Cookie的方法如下:

8VouUf9.png

F12进入开发者工具,选择Resources选项卡,选择Cookies,点击选择对应的域名,右键选择Clear即可清除该站点下的所有Cookie。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值