2016-05-23 2 views
0

keine doppelte Schlüsselzeile in Objekt mit eindeutigen IndexKann keine doppelte Schlüsselzeile in Objekt einfügen ‚dbo.AspNetUsers‘ mit eindeutigen Index ‚UserNameIndex‘

einfügen Kann ich versuche, meine Benutzer in eine neue Datenbank von asp erstellt zu übertragen .net Identität. Aber ich diesen Fehler:

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

Mein Code ist:

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] 

Kann jemand mir erklären, warum ich diesen Fehler und wie kann ich es beheben? Vielen Dank.

+1

Können Sie das RDBMS bestätigen? Ich nehme an, es ist MS SQL Server. Sehen Sie sich Ihren eindeutigen Index 'UserNameIndex' in der Tabelle 'dbo.AspNetUsers' an. Sie werden wahrscheinlich finden, dass es die Spalte 'UserName' enthält und dass die Tabelle 'dbo.Pj_Users' zwei Zeilen mit demselben 'UserName' hat. – JBond

+0

Danke! Das hat sehr geholfen! – levkaster

Antwort

2

Der Code hinter AspNetUsers ist

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); 

In meiner alten Datenbank, Benutzer eine eindeutige E-Mail hatte und nicht eindeutigen Benutzernamen haben könnte. Ich konnte keine Antwort finden, um dieses Problem zu beheben, also habe ich in der Datenbank die letzten beiden Zeilen:

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

Das ist mein Problem gelöst.

Verwandte Themen