【问题标题】:How to remove unique constraint from a column using Laravel migrations?如何使用 Laravel 迁移从列中删除唯一约束?
【发布时间】:2018-09-23 12:10:24
【问题描述】:

我必须使用 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]: 语法错误或访问冲突: 1061 Duplicate key name 'users_email_unique' (SQL: alter table `users` add unique `users_email_unique`(`email`))

【问题讨论】:

  • 删除索引,$table->dropUnique('email');从“用户”表中删除唯一索引。参考here

标签: laravel database-migration laravel-5.5 laravel-5.6


【解决方案1】:

提供的解决方案效果很好,但这里只有一个小提示:
你可以像这样传递一个带有列名的数组:

$table->dropUnique(['email']); 

在这种情况下,Laravel 将根据其约定自动生成索引名称

【讨论】:

    【解决方案2】:
     public function up()
     {
       Schema::table('users', function (Blueprint $table) {
        $table->string('email')->unique(false)->nullable()->change();
       });
      }
    

    改成

    $table->dropUnique('users_email_unique');
    

    【讨论】:

    • 它不工作。问题不在 down 方法中,问题在 up 方法的某个地方。我正在编辑我的问题。请也查看我的问题。
    • 我需要询问有关相同迁移的问题。我应该在这里问还是应该为它创建新问题。
    • 我想在同一个步骤中使同一个字段可以为空。但它不能一步到位。
    • 请给我几分钟。
    • 它的工作非常感谢您的帮助@Kuldeep Mishra
    猜你喜欢
    • 2022-01-14
    • 2018-08-05
    • 2011-07-26
    • 2022-01-23
    • 2011-08-06
    • 2015-08-16
    • 2023-04-06
    • 1970-01-01
    • 2012-04-18
    相关资源
    最近更新 更多