laraveldoctrinemigrationdbal

Laravel Database Migration Column altered to Unique and Nullable causing error


I am attempting to integrate social logins with my existing laravel app. I am attempting to change email and password to nullable but I also need email to remain unique. On executing my migration I am getting an error for duplicate key name 'users_email_unique'

Laravel 5, already fixed the issue with enum I had for altering a column.

    Schema::table('users', function (Blueprint $table) {
        $table->string('email')->unique()->nullable()->change();
        $table->string('password')->nullable()->change();
    });

Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'users_email_unique' (SQL: alter table users add unique users_email_unique(email))

Exception trace:

1 Doctrine\DBAL\Driver\PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'users_email_unique'")

/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:119

2 PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'users_email_unique'")

/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:117

Edit

If I remove Unique() from email, will it remain unique since that was previously set in a different migration?


Solution

  • Figured this out myself, as mentioned in the comment on the above answer.

    Simply because the table was already created with unique() if I remove that it will allow the migration and will also persist the unique() functionality that was in the original User table migration.