Laravel迁移与本地生产

Laravel迁移与本地生产,laravel,laravel-5.2,Laravel,Laravel 5.2,因此,该应用程序在生产环境和本地环境中运行良好。然后,在本地,我对DB做了一些更改,比如添加一个列和更改一个列的属性。当我在本地迁移时,出现了一个错误,因此我最终删除了该迁移文件,回滚了整个表,并创建了一个新的迁移,所有内容都按照我的要求进行了设置。在本地迁移了它,它正在工作 现在,我将这些更改推送到github,它们会自动拉到Laravel Forge并转到生产服务器。我得到一个错误,说“表已经存在”。因此,github存储库对已经在我的生产服务器上运行的表进行了新的迁移 我试图找出如何解决这

因此,该应用程序在生产环境和本地环境中运行良好。然后,在本地,我对DB做了一些更改,比如添加一个列和更改一个列的属性。当我在本地迁移时,出现了一个错误,因此我最终删除了该迁移文件,回滚了整个表,并创建了一个新的迁移,所有内容都按照我的要求进行了设置。在本地迁移了它,它正在工作

现在,我将这些更改推送到github,它们会自动拉到Laravel Forge并转到生产服务器。我得到一个错误,说“表已经存在”。因此,github存储库对已经在我的生产服务器上运行的表进行了新的迁移

我试图找出如何解决这个问题,而不打乱生产数据库表中当前的记录,并确保在需要删除该表的情况下进行迁移


谢谢

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

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

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

例如,如果您已经迁移了一个用户的表,并且决定向现有表添加一个昵称

您将创建一个新的迁移
php artisan make:migration alter\u users\u table\u add\u昵称

然后在这个迁移中,它不使用
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');

    });
}

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

上阅读更多内容

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

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

例如,如果您已经迁移了一个用户的表,并且决定向现有表添加一个昵称

您将创建一个新的迁移
php artisan make:migration alter\u users\u table\u add\u昵称

然后在这个迁移中,它不使用
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');

    });
}

你可以在

上阅读更多内容,好的,我已经涵盖了这一点。但是,在这种特定情况下,我应该问,如何协调我的存储库中的新迁移文件和服务器上的文件。也许这就像将生产分支与我的本地分支同步一样简单,所以这些文件是相同的。好吧,一个快速修复方法是导出生产数据库的内容,而不是结构。删除表并运行deploy on forge以使用编辑的迁移重新运行迁移,然后将数据重新导入。不过,我建议您在进行原始迁移的地方签回提交,并按照上面的步骤进行操作。好的,根据您的最后一句话,我需要将生产同步回本地,以便这些迁移再次相同。我会这样做,然后再给你的答案打分。谢谢酷。我最终导出了表记录(使用MySQL Workbench),删除了表,然后再次运行迁移并重新加载记录。超级容易。谢谢好的,我已经搞定了。但是,在这种特定情况下,我应该问,如何协调我的存储库中的新迁移文件和服务器上的文件。也许这就像将生产分支与我的本地分支同步一样简单,所以这些文件是相同的。好吧,一个快速修复方法是导出生产数据库的内容,而不是结构。删除表并运行deploy on forge以使用编辑的迁移重新运行迁移,然后将数据重新导入。不过,我建议您在进行原始迁移的地方签回提交,并按照上面的步骤进行操作。好的,根据您的最后一句话,我需要将生产同步回本地,以便这些迁移再次相同。我会这样做,然后再给你的答案打分。谢谢酷。我最终导出了表记录(使用MySQL Workbench),删除了表,然后再次运行迁移并重新加载记录。超级容易。谢谢这是您真正认识到暂存/生产卷影服务器重要性的实例之一:)什么是“生产卷影”?在部署到live server之前,您首先“暂存”部署,以减轻直接将更改部署到live server的一些问题。像这样。特别是当有多个开发人员在一个项目上工作,并且涉及到迁移脚本时,它真的很方便。好的,是的,我现在这样做了,但是由于这个原因没有那么成功。本地环境、暂存环境和生产环境。以下问题是否解决了您的问题?这是您真正认识到暂存/生产卷影服务器重要性的实例之一:)什么是“生产卷影”?这是您“暂存”的地方在部署到live server之前先进行部署,以缓解直接将更改部署到live server的一些问题。像这样。特别是当有多个开发人员在一个项目上工作,并且涉及到迁移脚本时,它真的很方便。好的,是的,我现在这样做了,但是由于这个原因没有那么成功。本地环境、暂存环境和生产环境。以下各项是否解决了您的问题?