2016-05-23 86 views
0

不能在對象中插入重複鍵行具有唯一索引不能在對象插入重複鍵行「dbo.AspNetUsers具有唯一索引「UserNameIndex」

我想我的用戶轉移到由ASP創建一個新的數據庫.net身份。但是,我得到這個錯誤:

Cannot insert duplicate key row in object 'dbo.AspNetUsers' with unique index 'UserNameIndex'.

我的代碼是:

INSERT INTO [dbo].[AspNetUsers] 
(
[Id], 
[UserName], 
[UserNameRus], 
[UserNameHeb], 
[UserNameEng], 
[Email], 
[EmailConfirmed], 
[PhoneNumberConfirmed], 
[TwoFactorEnabled], 
[LockoutEnabled], 
[AccessFailedCount], 
[Lang], 
[isSendCommercial] 
) 
SELECT 
NEWID(), 
[UserName], 
[UserNameRus], 
[UserNameHeb], 
[UserName], 
[Email], 
'false', 
'false', 
'false', 
'true', 
'0', 
[Lang], 
[isSendCommercial] 
FROM [dbo].[Pj_Users] 

可有一個人給我解釋一下,爲什麼會出現這個錯誤,我該如何解決?謝謝。

+1

你能確認RDBMS嗎?我假設它是MS SQL Server。看看'dbo.AspNetUsers'表上的唯一索引'UserNameIndex'。您可能會發現它包含'UserName'列,並且'dbo.Pj_Users'表具有兩個具有相同'UserName'的行。 – JBond

+0

謝謝!這非常有幫助! – levkaster

回答

2

背後AspNetUsers的代碼是

CREATE TABLE [dbo].[AspNetUsers] (
    [Id]     NVARCHAR (128) NOT NULL, 
    . 
    . 
    . 
    CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED ([Id] ASC) 
); 


GO 
CREATE UNIQUE NONCLUSTERED INDEX [UserNameIndex] 
    ON [dbo].[AspNetUsers]([UserName] ASC); 

在我的舊數據庫,用戶有一個唯一的電子郵件,並可能有非唯一的用戶名。我找不到解決此問題的答案,所以我在數據庫中將最後兩行更改爲:

CREATE UNIQUE NONCLUSTERED INDEX [EmailIndex] 
    ON [dbo].[AspNetUsers]([Email] ASC); 

解決了我的問題。

相關問題