Laravel Migration Local vs Production

时间:2016-04-27 15:34:47

标签: laravel laravel-5.2

因此,应用程序在生产和本地运行时运行良好。然后,在本地,我对数据库进行了一些更改,例如添加列和更改列的属性。当我去本地迁移时,我收到了一个错误,因此我最终删除了该迁移文件,回滚了整个表格,并根据需要创建了一个全新的迁移设置。在本地迁移并且它正在工作。

现在,我将这些更改推送到github,然后他们自动拉到Laravel Forge并转到生产服务器。我收到一条错误说#34;表已经存在"。因此,github存储库对已经在我的生产服务器上运行的那个表进行了新的迁移。

我试图弄清楚如何解决此问题,而不会破坏当前生产数据库表中的记录,并确保在我需要删除表的情况下进行迁移。

谢谢!

1 个答案:

答案 0 :(得分:3)

如果要在生产数据库中添加新列或更改任何内容。

您需要创建一个新的迁移,将这些行添加到数据库中。这并不像改变现有的迁移那么容易。

您在生产中获得“表已存在”的原因是因为迁移已经运行。

例如,如果您已经迁移了用户的表,并且您决定要在现有表中添加昵称。

您将创建新的迁移php artisan make:migration alter_users_table_add_nickname

然后在使用Schema::create进行的迁移中,它会使用Schema::table

public function up()
{
    Schema::table('users', function(Blueprint $table)
    {
        $table->string('nickname');
    });
}

public function down()
{
    Schema::table('users', function(Blueprint $table){
        $table->dropColumn('nickname');

    });
}

您可以在Creating Columns

上阅读更多内容