【问题标题】:Laravel migration deploymentLaravel 迁移部署
【发布时间】:2018-04-06 10:22:06
【问题描述】:

真的只是一个快速的

我有一个现有的 Laravel 应用程序

我想使用迁移将一些列添加到现有表中

所以我做了以下事情:

php artisan make:migration add_columns_to_table

这会在我的迁移文件夹中创建一个名为:

2017_10_25_124938_add_column_to_table.php

并且还在我的数据库迁移表中创建一个条目。都很好。

我可以编辑迁移文件(添加列等)并运行

php artisan migrate

一切都很好

现在 - 我的问题是:

当我开始部署到 live 时,我假设我会登录 live box 并再次运行 create migration 命令:

php artisan make:migration add_columns_to_table

但这会创建一个与我在本地创建/测试的名称不同的迁移?

那么,我需要手动将代码从本地 2017_10_25_124938_add_column_to_table.php 迁移文件复制到在 live box 上创建的那个吗?

这似乎有点落后和繁琐

当 create migration 命令在 live box 上创建不同的命名迁移文件(和 DB 条目)时,在本地创建和测试迁移然后将其部署到 live 的最佳方法是什么?

还是我弄错了?

【问题讨论】:

  • 迁移的目的是将数据库设计更改纳入版本控制。所以是的,您将相同的文件部署/上传到您的生产服务器,然后在那之后运行php artisan migrate。为什么要在生产服务器上单独创建一个新的迁移?你在开发和生产中做不同的事情吗?
  • 但是,如果我只是将本地文件部署到 live 中,那么 live 数据库中不会有用于迁移的条目吗?那么 laravel 怎么知道去运行它呢?还是 artisan migrate 命令只运行迁移文件夹中的所有内容?
  • 不,迁移文件的纯粹存在不会影响您的数据库 :) 当您第一次运行 php artisan migrate 时,Laravel 会在数据库中创建一个 migrations 表,它会在其中跟踪已经运行的迁移。然后它扫描迁移文件夹中的所有文件,仅过滤新文件(即那些不在migrations 表中的文件),运行它们并将它们添加到该表中,以便下次运行时它们不会运行@ 987654329@。 (不太确定我是否理解您的问题,如果这不是您想知道的,请问:))
  • 啊,没有问题。我的错,我认为它使用表来决定运行哪些迁移。但它实际上使用它来知道哪个不运行。干杯。这清除了它。谢谢你的帮助。

标签: php laravel laravel-5 eloquent migration


【解决方案1】:

最佳做法是将迁移文件与存储库一起保存。在任何环境中部署应用程序时,您都必须执行所有迁移。

php artisan migrate

此命令将运行当前环境中尚未执行的所有迁移。 Laravel 使用一个名为“迁移”的表来跟踪它已经运行的所有迁移。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 2015-06-16
    • 2021-03-22
    • 2019-03-06
    • 2017-10-17
    • 1970-01-01
    相关资源
    最近更新 更多