2016-05-11 13 views
0

Warum kann ich nicht mehr als einen Benutzer yii2 Anwendung hinzufügen? Ich benutze Microsoft SQL Server und der Anmeldecode für yii2 App hat sich noch nicht geändert. Wenn in der Benutzertabelle kein Datensatz vorhanden ist, kann ich einen Benutzer hinzufügen, indem ich die Anmeldeseite von yii verwende. dies ist der DB-SkriptEinfügen in Microsoft SQL Server Benutzerdatenbank fehlgeschlagen

USE [IBR] 
GO 

/****** Object: Table [dbo].[user] Script Date: 11/05/2016 16.51.02 ******/ 
SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[user](
    [id] [int] IDENTITY(1,1) NOT NULL, 
    [username] [nvarchar](255) NOT NULL, 
    [auth_key] [nvarchar](32) NOT NULL, 
    [password_hash] [nvarchar](255) NOT NULL, 
    [password_reset_token] [nvarchar](255) NULL, 
    [email] [nvarchar](255) NOT NULL, 
    [status] [smallint] NOT NULL DEFAULT ((10)), 
    [created_at] [int] NOT NULL, 
    [updated_at] [int] NOT NULL, 
PRIMARY KEY CLUSTERED 
(
    [id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], 
UNIQUE NONCLUSTERED 
(
    [password_reset_token] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], 
UNIQUE NONCLUSTERED 
(
    [email] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], 
UNIQUE NONCLUSTERED 
(
    [username] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 

dies ist der Screenshot. error while signup for 2nd times

+2

was haben Sie aus dem Fehler nicht verstanden? der Fehler selbst sagt Ihnen, dass Sie einen doppelten Wert für eine eindeutige Spalte verwenden –

+0

scheint Ihre Abfrage verletzen die eindeutige Einschränkung der Tabelle. Überprüfen Sie, ob bereits ein Eintrag in der Tabelle für den Benutzernamen "Tari" vorhanden ist. – bmsqldev

+0

Es sieht so aus, als würden Sie keine Daten in Ihren Primärschlüssel einfügen. Schau dir deine Tabellenstruktur an und finde heraus, wo das PK ist. Sie müssen einen eindeutigen Wert einfügen, in dem Moment, in dem Sie versuchen, einen NULL-Wert einzufügen, aber es ist bereits einer drin. –

Antwort

0

Sieht aus wie Ihr Problem mit der Spalte [password_reset_token] ist.

Sie haben eine eindeutige Integritätsbedingung für diese Spalte, aber sie erlaubt NULL-Werte, und Sie fügen keine Daten in diese Anweisung ein. Aus diesem Grund wird NULL als Duplikatschlüssel angezeigt. Sie können entweder die eindeutige Einschränkung für dieses Feld entfernen oder nach eindeutigen Daten in dieses Feld suchen.

+0

aber ich brauche diese Spalte, um eindeutig zu sein, wenn der Inhalt dieser Spalte nicht null ist. Wenn das Kennwort nicht zurückgesetzt wird, ist dieser Spaltenwert null, aber wenn das Kennwort zurückgesetzt wird, ist dieser Spaltenwert nicht null und eindeutig. ist es möglich? – Kurniawantaari

+0

Nicht mit einer eindeutigen Einschränkung für diese Spalte. Sie könnten dies in Ihrer update-Anweisung tun, die diese Zahl festlegt, aber nicht in der Tabelle selbst. –

Verwandte Themen