2017-06-26 80 views
0

我想向我的数据库表用户添加另一列。我进行了名为Modify_users_table的新迁移,其中添加了该列的代码。源代码没有问题,因为我之前使用过它,但是它给了我一个错误,表中的角色出了问题?我该如何解决这个问题?以下是错误和相关的错误 enter image description hereLaravel尝试迁移时出错

这里的代码迁移Roles

public function up() 
{ 
    Schema::create('roles', function (Blueprint $table) { 
     $table->string('role_name')->length(55)->unique(); 
     $table->increments('id'); 
     $table->timestamps(); 
    }); 
} 
+0

这意味着您的角色表已经存在,但它不存在于'migrations'表中。找出发生的原因并通过回滚或重置进行修复。 (这将删除表格中的所有现有数据) – Robert

+0

作为一般的经验法则,将错误作为文本而不是截图包含在内会更好。 –

回答

0

你需要运行

php artisan migrate:rollback 

如果还是失败只是去并删除所有可能必须执行的表,因为看起来您的迁移表已经搞乱了,或者当您运行先前的回滚时您的角色表没有删除表。

,或者您可以使用migrate:reset命令将回滚所有应用程序的迁移:

php artisan migrate:reset 
-1

从数据库中删除表(我做的手工,我第一次有这个问题)

和使在create_users_table迁移这一变化如此

$table->string('email', 60)->unique(); 

这个工作对我来说..

希望这对你有所帮助

2

你有很多问题。你的主要问题是你没有添加一列到表中。你的脚本,而不是试图建立一个新表,因为在这条线上看到:

Schema::create('roles', function (Blueprint $table) { 

你说你正试图添加到用户表中的列,但你甚至与用户的表工作不是:您需要创建一个名为roles的表格,该表格已经存在。最简单的解决方案就是做达瓦尔的建议:消除你添加的迁移,更新创建用户表的迁移,重新开始。

“正确”的答案是创建一个新的迁移,并将说明添加到用户表的列以及删除它的说明。然后你可以做一个简单的迁移,而不是让你的数据库受到影响。这看起来像这样:

public function up() 
{ 
    Schema::table('users', function (Blueprint $table) { 
     $table->string('last_name')->after('first_name')->default(''); 
    }); 
} 

public function down() 
{ 
    Schema::table('users', function (Blueprint $table) { 
     $table->dropColumn(['last_name']); 
    }); 
}