【问题标题】:SQLSTATE[23000]: Cannot insert duplicate key row in objectSQLSTATE[23000]:无法在对象中插入重复的键行
【发布时间】: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。

【问题讨论】:

    标签: php sql-server laravel laravel-5.8 php-7.4


    【解决方案1】:

    您正在尝试将新记录/行插入到电子邮件中具有唯一约束(进而创建唯一索引)的表中。

    由于这似乎是唯一约束中包含的唯一列,这意味着某个电子邮件值只能在表中插入一次。否则,它将不是此列的唯一值。

    按照您的表列名称,这看起来像是某种用户注册,这似乎是所需的行为。这意味着您的数据库中可能只有一些需要清除的测试数据。或者在开发过程中暂时放弃唯一性约束,或者继续编造新的电子邮件值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-11
      • 2021-06-30
      • 1970-01-01
      • 2021-08-13
      • 2014-05-04
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多