Php 尝试迁移时发生Laravel错误

Php 尝试迁移时发生Laravel错误,php,laravel,laravel-5,laravel-5.2,Php,Laravel,Laravel 5,Laravel 5.2,我想向数据库表用户添加另一列。我做了一个名为Modify\u users\u table的新迁移,其中包含添加列的代码。源代码没有问题,因为我以前使用过它,但它给了我一个错误,表角色有什么问题吗?我怎样才能解决这个问题?下面是错误和与错误相关的代码 以下是迁移角色: public function up() { Schema::create('roles', function (Blueprint $table) { $table->string('role_n

我想向数据库表用户添加另一列。我做了一个名为
Modify\u users\u table
的新迁移,其中包含添加列的代码。源代码没有问题,因为我以前使用过它,但它给了我一个错误,表角色有什么问题吗?我怎样才能解决这个问题?下面是错误和与错误相关的代码

以下是迁移
角色

 public function up()
{
    Schema::create('roles', function (Blueprint $table) {
        $table->string('role_name')->length(55)->unique();
        $table->increments('id');
        $table->timestamps();
    });
}
你需要跑步

php artisan migrate:rollback
如果这也失败了,只需进入并删除所有表,您可能必须这样做,因为您的迁移表似乎混乱不堪,或者您的角色表在运行上一次回滚时没有删除该表

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

php artisan migrate:reset

从数据库中删除该表(我第一次遇到此问题时手动执行)

并在create_users_表迁移中进行此更改

$table->string('email', 60)->unique();
这对我来说很有效


希望这对您也有帮助

您有很多问题。您的主要问题是没有向表中添加列。您的脚本正在尝试创建一个新表,如此行所示:

Schema::create('roles', function (Blueprint $table) {
您说您正在尝试向users表添加一列,但您甚至没有使用用户表:而是创建一个名为
roles
的表,该表已经存在。最简单的解决方案是按照Dhaval的建议执行:放弃添加的迁移,更新创建用户表的迁移,重新开始

“正确”的答案是创建一个新的迁移,并输入将该列添加到用户表的说明以及删除该列的说明。然后,您可以只进行简单的迁移,而不是对数据库进行核化。看起来是这样的:

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'] );
    });
}

我也有同样的问题,我尝试过类似的东西,它对我来说非常适合。我的Laravel版本是5.5

public function up()
{
    Schema::connection('mysql2')->create('images', function (Blueprint $table) {
        $table->increments('id');             
        $table->string('name');                      
        $table->string('image');            
        $table->timestamps();
    });
}

public function down()
{
    Schema::connection('mysql2')->dropIfExists('images');
}
我必须在我的项目中使用连接,一个是mysql,另一个是mysql2,因为我的项目是针对具有多个连接的数据库的

因此,我的解决方案是尝试在函数中指定与数据库的连接

默认情况下,连接是mysql,如果您没有在函数中指定它,下面给出了示例。希望这有帮助

public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');                
            $table->string('name');
            $table->string('email',60)->unique();
            $table->string('password');                
            $table->rememberToken();
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('users');
    }

因此,当您使用php artisan进行迁移时,它不会显示错误,

这意味着您的角色表已经存在,但它不在
迁移
表中。找出发生这种情况的原因,并通过回滚或重置进行修复。(这将删除表中的所有现有数据)作为一般经验法则,最好将错误作为文本而不是屏幕截图。