如何使用Laravel迁移从列中删除唯一约束?

问题描述 投票:1回答:2

我必须使用Laravel迁移从电子邮件列中删除唯一约束。这是我的代码:

class AlterEmailToUsers extends Migration
{
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->string('email')->unique(false)->nullable()->change();
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::table('users', function (Blueprint $table) {
       $table->string('email')->nullable(false)->unique()->change();
    });
}

}

但是当我运行php artisan migrate时,我收到以下错误:

SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'users_email_unique' (SQL: alter table `users` add unique `users_email_unique`(`email`))
laravel database-migration laravel-5.5 laravel-5.6
2个回答
2
投票
 public function up()
 {
   Schema::table('users', function (Blueprint $table) {
    $table->string('email')->unique(false)->nullable()->change();
   });
  }

改成

$table->dropUnique('users_email_unique');

0
投票

我想你可以放弃你的专栏

并重新创建:

请注意,它会删除电子邮件列中的值

 if (Schema::hasColumn('users', 'email'))
    {
       Schema::table('users', function (Blueprint $table) {
             $table->dropColumn('email');
       });
    }

    Schema::table('users', function (Blueprint $table) {
       $table->string('email')->nullable();
    });
© www.soinside.com 2019 - 2024. All rights reserved.