使用ABP時報錯“UPDATE 語句與 FOREIGN KEY SAME TABLE 約束"FK_dbo.AbpUsers_dbo.AbpUsers_LastModifierUserId"沖突”的解決辦法


ABP理論學習總目錄

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

ABP之Module-Zero學習目錄


本篇目錄

問題####

問題的是在下面這種情況下出現的:

我在使用CodeFirst更新了數據庫后,然后數據庫中產生數據表了,幾個表中也都有數據。問題的主要原因是跟AbpUsers表有關的。

一開始AbpUsers表的數據是這樣的:

我直接刪除了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的方法如下:

F12進入開發者工具,選擇Resources選項卡,選擇Cookies,點擊選擇對應的域名,右鍵選擇Clear即可清除該站點下的所有Cookie。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM