2016-05-11 53 views
0

为什么我不能向yii2应用程序添加多个用户?我正在使用微软sql服务器,yii2应用程序的注册码尚未更改。当用户表中没有记录时,我可以使用yii的注册页面添加用户。 这是DB脚本插入到Microsoft SQL Server用户数据库失败

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 

这是截图。 error while signup for 2nd times

+2

你从错误中没有理解什么?错误本身告诉你,你正在使用一个唯一列的重复值 –

+0

好像你的查询违反了表的唯一约束。检查表中是否已有用户名“Tari”的条目 – bmsqldev

+0

看起来您根本没有将数据插入到主键中。检查你的表格结构并找出PK的位置。你需要插入一个唯一的值,在你试图插入一个NULL的时候,但是那里已经有一个值了。 –

回答

0

看起来您的问题与[password_reset_token]列有关。

您对该列有一个唯一的约束,但它允许NULL值,并且不会在此语句中插入数据,这就是为什么它将NULL看作重复键。您可以删除此字段上的唯一约束,也可以将唯一数据插入此字段。

+0

但我需要该列是唯一的,如果该列的内容不为空。所以,当密码未被重置时,该列值为空,但是当密码被重置时,该列值不为空且是唯一的。可能吗? – Kurniawantaari

+0

不适用于该列上的唯一约束。你可以在你的更新语句中设置该数字,但不能在表格本身中完成。 –