gpt4 book ai didi

Laravel 数据库迁移列更改为 Unique 和 Nullable 导致错误

转载 作者:行者123 更新时间:2023-12-02 20:07:37 24 4
gpt4 key购买 nike

我正在尝试将社交登录与我现有的 Laravel 应用程序集成。我正在尝试将电子邮件和密码更改为可为空,但我还需要电子邮件保持唯一性。在执行迁移时,我收到重复键名称“users_email_unique”的错误

Laravel 5,已经解决了我用于更改列的枚举问题。

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

Illuminate\Database\QueryException:SQLSTATE[42000]:语法错误或访问冲突:1061 重复键名称“users_email_unique”(SQL:更改表users 添加唯一的users_email_unique (电子邮件))

异常跟踪:

1 Doctrine\DBAL\Driver\PDOException::("SQLSTATE[42000]: 语法错误或访问冲突: 1061 重复键名 'users_email_unique'")

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

2 PDOException::("SQLSTATE[42000]: 语法错误或访问冲突: 1061 重复键名 'users_email_unique'")

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

编辑

如果我从电子邮件中删除 Unique(),它是否会保持唯一性,因为之前在不同的迁移中设置了该值?

最佳答案

您可以通过以下方式更改新迁移中的唯一性行为:

public function up()
{
Schema::table('contacts', function (Blueprint $table) {
$table->dropUnique(['email']);
});
}

/**
* Reverse the migrations.
*
*/
public function down()
{
Schema::table('contacts', function (Blueprint $table) {
$table->string('email')->unique()->change();
});
}

Nullable() 属性将保留在 email 列中,因为它是用它创建的。

关于Laravel 数据库迁移列更改为 Unique 和 Nullable 导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54315277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com