【发布时间】:2020-02-13 05:42:19
【问题描述】:
我的情况是我已经将我的表迁移到数据库,现在我又创建了一个表,我也想推送它,所以我再次运行php artisan migrate,但这一次它抛出了上一个表已经存在的错误,
我无法回滚并再次迁移我的其他表中有数据
那我该怎么办,有没有其他办法?
我试过了
php artisan migrate
【问题讨论】:
标签: laravel-5
我的情况是我已经将我的表迁移到数据库,现在我又创建了一个表,我也想推送它,所以我再次运行php artisan migrate,但这一次它抛出了上一个表已经存在的错误,
我无法回滚并再次迁移我的其他表中有数据
那我该怎么办,有没有其他办法?
我试过了
php artisan migrate
【问题讨论】:
标签: laravel-5
迁移是批量进行的,所以假设您有迁移:
你跑了php artisan migrate,它会在一批下创建这些表,我们称之为Batch 1
现在假设您为新表添加了一个迁移:
这一次,当您运行 php artisan migrate 时,会在内部检查一个状态,以查看已创建哪些新表迁移,这些迁移尚未在某个批处理之下。
它将检查第 1 批,因为这是迄今为止创建的唯一一批,并将在第二批下创建新表,我们称之为 Batch 2
所以它会是这样的:
表 1 |
表 2 | --> 第一批
表 3 |
表 4 | --> 第 2 批
等等……
所以,你一定做了我上面列出的以外的其他事情。
如果您在数据库中手动创建了表,然后还创建了迁移,当然php artisan migrate 会给出table already exists 的错误,在这种情况下您不需要运行迁移,因为您已经有了表。
无论如何运行:php artisan migrate:status,它将让您知道迁移的确切状态和问题。
您还可以检查数据库中的migrations 表,该表还指定了创建表的批次。
【讨论】: