SQLSTATE [23000]: невозможно вставить повторяющуюся ключевую строку в объект.

Когда я пытаюсь вставить новый столбец в базу данных SQL Server, я получаю следующую ошибку.

SQLSTATE [23000]: [Microsoft] [Драйвер ODBC 17 для SQL Server] [SQL Server] Невозможно вставить повторяющуюся строку ключа в объект 'dbo.users' с уникальным индексом 'users_api_token_unique'. Повторяющееся значение ключа - (). (SQL: вставить в значения [пользователей] ([имя], [электронная почта], [пароль], [обновленный_ат], [created_at]) (ibramin salah, [email protected], $ 2y $ 10 $ laopDTNj9Ddzr4cf4a4ctuxYwra5raqm8TXXBS.Rc2wBH2mnf.Rc2wBH2mnf. 07.08.2020 08:57: 49.077, 07.08.2020 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.


person walidmo3geza    schedule 07.08.2020    source источник


Ответы (1)


Вы пытаетесь вставить новую запись / строку в таблицу, имеющую уникальное ограничение (которое, в свою очередь, создает уникальный индекс) в электронной почте.

Поскольку это единственный столбец, включенный в ограничение уникальности, это означает, что определенное значение электронной почты может быть вставлено в таблицу только один раз. В противном случае это не было бы уникальным значением для этого столбца.

Судя по именам столбцов в вашей таблице, это выглядит как своего рода регистрация пользователя, где такое поведение кажется желаемым. Это означает, что у вас, вероятно, есть только некоторые тестовые данные в вашей базе данных, которые вам нужно очистить. Или временно удалите уникальное ограничение во время разработки, или продолжайте создавать новые значения электронной почты.

person D Kramer    schedule 07.08.2020