SQLSTATE[23000]:无法在对象中插入重复的键行
Posted
技术标签:
【中文标题】SQLSTATE[23000]:无法在对象中插入重复的键行【英文标题】:SQLSTATE[23000]: Cannot insert duplicate key row in object 【发布时间】:2020-11-27 14:40:02 【问题描述】:当我尝试将新列插入 SQL Server 数据库时,我收到以下错误。
SQLSTATE[23000]:[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]无法在具有唯一索引“users_api_token_unique”的对象“dbo.users”中插入重复的键行。重复键值为 ()。 (SQL:插入 [users]([name]、[email]、[password]、[updated_at]、[created_at])值(ibramin salah、ibra@gmail.com、$2y$10$laopDTNj9Ddzr4cf4a4ctuxYwra5raqm8TXXBS.Rc2wBH2mnf.cJG、 2020-08-07 08:57:49.077, 2020-08-07 08:57:49.077))
表架构
Schema::create('users', function (Blueprint $table)
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->boolean('adminCreation')->default(0);
$table->rememberToken();
$table->timestamps();
);
我正在使用 Laravel 5.8 和 php 版本 7.4.4。
【问题讨论】:
【参考方案1】:您正在尝试将新记录/行插入到电子邮件中具有唯一约束(进而创建唯一索引)的表中。
由于这似乎是唯一约束中包含的唯一列,这意味着某个电子邮件值只能在表中插入一次。否则,它将不是此列的唯一值。
按照您的表列名称,这看起来像是某种用户注册,这似乎是所需的行为。这意味着您的数据库中可能只有一些需要清除的测试数据。或者在开发过程中暂时放弃唯一性约束,或者继续编造新的电子邮件值。
【讨论】:
以上是关于SQLSTATE[23000]:无法在对象中插入重复的键行的主要内容,如果未能解决你的问题,请参考以下文章
PDO 异常 SQLSTATE [23000]:在 php 中
SQLSTATE [23000]:完整性约束违规:1452 无法在 laravel 迁移中添加或更新子行
Innobyte 插件问题:SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行
SQLSTATE [23000]:完整性约束违规:1048 laravel 5.7