【Laravel 8.x】email重複エラーについて

Laravel

Laravelでデータベースにデータを追加できるようになり、特に何も設定してないが同じデータを追加しようとするとemailの重複エラーが発生した。

今回はどこでそれが設定されていて解除方法の覚書を残しておきます。

今回のエラー文

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'test@test' for key 'users_email_unique' 

phpMyAdminを見てみると以下のような項目を発見

ユニークの項目を変更することで重複可能か不可か設定できそう。

migrateを書き換え

userstable用のmigrateファイルのemail部分にuniqueを消してみる。

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');;
            $table->string('userid');
            $table->string('name');
            //$table->string('email')->unique();
            $table->string('email');
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}
   

以下のコマンドを実行して更新する。尚、データベースのデータは消去されてしまうので注意です。

php artisan migrate:refresh

再度phpMyAdminの項目を見てみるとusers_email_uniqueは消えています。

そして同じユーザ追加を複数回実行すると以下の画像のように成功しています。

以上で今回の問題解決とします。参考になれば幸いです。

コメント

タイトルとURLをコピーしました