我有这个:
$表 - >整数( 'ROLE_ID') - >指数() - >无符号() - >可为空的();
但我想将其更改为:
$表 - >整数( 'ROLE_ID') - >指数() - >无符号() - >可为空() - >默认(3);
我本来想使用它,但我无法理解源语法:
php artisan make:migration update_role_id_in_users --table = users
我甚至尝试使用doctrine/ddbal
包并运行它:
php artisan make:migration modify_role_id_in_users --table = users
迁移设置如下:
class ModifyRoleIdInUsers extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
//
$table->integer('role_id')->index()->unsigned()->nullable()->default(3)->change();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
//
$table->integer('role_id')->index()->unsigned()->nullable()->change();
});
}
}
但我在迁移时遇到此错误:
[Illuminate \ Database \ QueryException] SQLSTATE [42000]:语法错误 或访问冲突:1061重复键名'users_role_id_index' (SQL:alter table'users'添加索引'users_role_id_index'('role_
ID'))[Doctrine \ DBAL \ Driver \ PDOException] SQLSTATE [42000]:语法错误 或访问冲突:1061重复的密钥名称'users_role_id_index'
[PDOException] SQLSTATE [42000]:语法错误或访问冲突: 1061重复键名'users_role_id_index'
如何在不执行column
migrate:refresh
答案 0 :(得分:3)
您可以使用change()
方法执行此操作:
$table->integer('role_id')->index()->unsigned()->nullable()->default(3)->change();
请务必在更新之前运行
composer require doctrine/dbal
通过迁移的列
希望这有帮助!
答案 1 :(得分:0)
解决方案是:
default(3)
添加到role_id column
的末尾,如$table->integer('role_id')->index()->unsigned()->nullable()->default(3)->change();
php artisan migrate
这解决了它并且表格被改变了。