如何正确删除 Laravel 5.3 中用户 table 列中的 'unique' 列属性?
How to correctly remove 'unique' column attribute in users table column in Laravel 5.3?
早期的后续教程给我留下了一个设置为唯一的 'username' 列。我想更改它,以便我的唯一用户标识符与电子邮件相关联。
我已完成找到的步骤:
- 作曲家要求 doctrine/dbal
- php artisan make:migration modify_users_table --table=用户数
我的迁移包含:
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('username')->unique(false)->change();
});
}
但是,当我 运行 命令 'php artisan migrate' 我得到
[Illuminate\Database\QueryException]
SQLSTATE[42000]:语法错误或访问冲突:1280 不正确的索引名称'' (SQL: alter table users add unique (us
ername))
[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[42000]:语法错误或访问冲突:1280 不正确的索引名称''
[PDOException]
SQLSTATE[42000]:语法错误或访问冲突:1280 索引名称不正确''
根据我的初步研究,问题似乎出在我的索引上:
users_username_unique
所以我的问题是:
删除该索引然后 运行 迁移是否安全?
如果这是正确的方法,我的迁移是否需要像这样:
$table->dropUnique('users_username_unique');
那么这个命令会自动创建一个正确的,non-unique,索引吗?
$table->string('username')->unique(false)->change();
您需要创建一个新的迁移并使用dropUnique()
方法:
Schema::table('users', function (Blueprint $table) {
$table->dropUnique('users_username_unique');
});
然后运行composer du
和php artisan migrate
命令执行迁移。
删除唯一索引并添加普通索引。
$table->dropUnique(['username']);
$table->index('username');
如果需要,为电子邮件添加唯一索引。
$table->unique('email');
对于 dropUnique() 方法,您必须创建一个新的迁移,
Schema::table('users', function (Blueprint $table) {
$table->dropUnique('username');
});
或者如果需要,您可以为用户名添加唯一索引。
Schema::table('users', function (Blueprint $table) {
$table->unique('username');
});
早期的后续教程给我留下了一个设置为唯一的 'username' 列。我想更改它,以便我的唯一用户标识符与电子邮件相关联。
我已完成找到的步骤:
- 作曲家要求 doctrine/dbal
- php artisan make:migration modify_users_table --table=用户数
我的迁移包含:
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('username')->unique(false)->change();
});
}
但是,当我 运行 命令 'php artisan migrate' 我得到
[Illuminate\Database\QueryException]
SQLSTATE[42000]:语法错误或访问冲突:1280 不正确的索引名称'' (SQL: alter table users add unique (us
ername))
[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[42000]:语法错误或访问冲突:1280 不正确的索引名称''
[PDOException]
SQLSTATE[42000]:语法错误或访问冲突:1280 索引名称不正确''
根据我的初步研究,问题似乎出在我的索引上:
users_username_unique
所以我的问题是:
删除该索引然后 运行 迁移是否安全?
如果这是正确的方法,我的迁移是否需要像这样:
$table->dropUnique('users_username_unique');
那么这个命令会自动创建一个正确的,non-unique,索引吗?
$table->string('username')->unique(false)->change();
您需要创建一个新的迁移并使用dropUnique()
方法:
Schema::table('users', function (Blueprint $table) {
$table->dropUnique('users_username_unique');
});
然后运行composer du
和php artisan migrate
命令执行迁移。
删除唯一索引并添加普通索引。
$table->dropUnique(['username']);
$table->index('username');
如果需要,为电子邮件添加唯一索引。
$table->unique('email');
对于 dropUnique() 方法,您必须创建一个新的迁移,
Schema::table('users', function (Blueprint $table) {
$table->dropUnique('username');
});
或者如果需要,您可以为用户名添加唯一索引。
Schema::table('users', function (Blueprint $table) {
$table->unique('username');
});