【问题标题】:How to migrate extra tables in laravel?如何在 laravel 中迁移额外的表?
【发布时间】:2020-02-13 05:42:19
【问题描述】:

我的情况是我已经将我的表迁移到数据库,现在我又创建了一个表,我也想推送它,所以我再次运行php artisan migrate,但这一次它抛出了上一个表已经存在的错误, 我无法回滚并再次迁移我的其他表中有数据

那我该怎么办,有没有其他办法?

我试过了

php artisan migrate

【问题讨论】:

    标签: laravel-5


    【解决方案1】:

    迁移是批量进行的,所以假设您有迁移:

    • 表一
    • 表 2
    • 表 3

    你跑了php artisan migrate,它会在一批下创建这些表,我们称之为Batch 1

    现在假设您为新表添加了一个迁移:

    • 表 4

    这一次,当您运行 php artisan migrate 时,会在内部检查一个状态,以查看已创建哪些新表迁移,这些迁移尚未在某个批处理之下。

    它将检查第 1 批,因为这是迄今为止创建的唯一一批,并将在第二批下创建新表,我们称之为 Batch 2

    所以它会是这样的:

    表 1 |
    表 2 | --> 第一批
    表 3 |

    表 4 | --> 第 2 批

    等等……

    所以,你一定做了我上面列出的以外的其他事情。

    如果您在数据库中手动创建了表,然后还创建了迁移,当然php artisan migrate 会给出table already exists 的错误,在这种情况下您不需要运行迁移,因为您已经有了表。

    无论如何运行:php artisan migrate:status,它将让您知道迁移的确切状态和问题。

    您还可以检查数据库中的migrations 表,该表还指定了创建表的批次。

    【讨论】:

    • 是的,我想,我现在知道它是如何工作的了,谢谢你我不知道批处理,我运行状态命令我看清楚了,现在我知道问题了
    • 是的,回滚也是分批发生的,所以如果你运行回滚,它只会回滚最新的批次......很高兴它有帮助
    • 是的,该表是手动创建的,我认为它之前可能已经迁移,因为我正在处理现有项目
    猜你喜欢
    • 2016-07-09
    • 2021-08-16
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 2016-03-11
    相关资源
    最近更新 更多