【发布时间】:2017-05-30 07:10:14
【问题描述】:
我正在为我的 Yii2 项目使用 SQL Server,并成功连接并运行迁移。
我想将新用户从我的 yii2 项目注册到我的数据库,但我从 SQL Server 收到此错误。=:
违反 UNIQUE KEY 约束“UQ__user__xxx”。无法在对象“dbo.user”中插入重复键。重复键值为 (NULL)。
这是执行的查询:
INSERT INTO [user]
([username],
[auth_key],
[password_hash],
[email],
[user_type],
[status],
[created_at],
[updated_at])
VALUES
('andhy',
'EIrQRO31WLuDGDPoSIkz_wTWEzjGzIK0',
'$2y$13$1cWynvtIyDA.7I3nyvKqmuq6KT5XPsNc6LaJ04MrWmiNpqP2.vraS',
'my.account@gmail.com',
'backend',
10,
1496125394,
1496125394)
唯一键只有[id](作为PK)、[username]、[email]、[password_reset_token]。
我认为必须在查询中选择 [id] 字段并将 IDENTITY_INSERT 设置为 ON,但这对我来说不是一个好的解决方案。
【问题讨论】:
-
错误信息很容易解释,你的表有一个约束阻止你输入重复的键。
-
我只是使用yii2的默认迁移来创建用户表
-
@DavidG 我知道错误的含义。我已确保 [username]、[email]、[password_reset_token] 字段没有重复条目。没有设置[id]字段时,只有[id]字段不能像MySQL一样执行自增。
-
您要么必须明确提供
ID字段的值,要么启用IDENTITY_INSERT以便在未提供值时自动递增按预期工作。我想不出任何其他选择。 -
约束
UQ__user__xxx是什么?这将告诉您哪些列是给您错误的键的一部分。另外,请edit您的问题,而不是在 cmets 中添加代码。
标签: php sql-server yii2 sqlsrv