Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 迁移的区别是什么:刷新和迁移:重置Laravel


迁移的区别是什么:刷新和迁移:重置Laravel


命令“迁移:刷新”和“迁移:Laravel中的重置”都与管理数据库迁移有关,但是它们具有不同的目的,并且在数据库架构管理过程中以不同的方式行事。了解他们的差异对于Laravel开发人员在开发或部署过程中有效处理数据库状态至关重要。

###迁移:刷新

`php工匠迁移:刷新命令用于倒退所有迁移,然后再次运行它们。这意味着它会回滚已应用的每个迁移(执行每个迁移的``down()方法),然后再次运行每个迁移的方法

up()方法从scratch重建数据库架构。

 - 它的作用:
   - 倒退所有迁移(撤销所有模式更改)。
   - 重新运行所有迁移以重建数据库模式。
 - 典型用例:
   - 当您想重置数据库架构时,可以通过迁移使数据库结构保持一致时有用。
   - 允许测试迁移以确保可以多次清洁地应用它们。
   - 通常与“ seed”选项(
php artisan迁移'':REFRESH -SEED“)相结合,在重建后用种子数据重新填充数据库。
- 优点:
- 通过正确应用``down()和`up()方法来保持数据库结构一致。
- 可以使用`-Step`选项选择性地刷新有限数量的迁移(例如,`php Artisan迁移:Refresh -Step = 5`将回滚并重新运行最后五个迁移)。
- 表现:
- 在处理大量迁移时,可以慢于“迁移:新鲜”,因为它在重新申请之前对每个迁移执行``down()`方法了。
- 数据:
- 由于它会退缩所有迁移,因此除非重新种子,否则表中的数据将丢失。
- 保留在迁移中定义的回滚逻辑,因此,如果仔细编写迁移,它可以防止矛盾。

###迁移:重置

`php工匠迁移:reset`命令倒退所有已应用的迁移,将数据库返回其原始的未迁移状态。

- 它的作用:
- 通过执行每个迁移的``down()方法来倒退所有迁移。
- 与“刷新”不同,它不会重新运行迁移。
- 典型用例:
- 当您想完全撤消所有迁移而不重新申请它们时,有用。
- 在确定下一步要做什么之前,您需要在需要完全清除架构的情况下。
- 优点:
- 清除所有基于迁移的数据库架构更改。
- 数据:
- 与“刷新”一样,倒退迁移会导致表数据丢失。
- 一旦重置所有迁移,就不会存在模式。
- 行为:
- 使数据库处于非迁移状态。
- 如果打算重建模式,则需要手动运行“ PHP Artisan迁移”。

###其他上下文:迁移:新鲜比较

尽管没有直接问,但“迁移:新命令通常都与``刷新''和`reset'相混淆,并有助于进一步阐明差异:

- `php工匠迁移:Fresh`将所有表直接放在数据库中,而无需运行``down down()`方法,然后运行所有迁移。
- 它更快了,因为它不是通过迁移来返回迁移,而只是丢下所有表。
- 非常适合在没有回滚逻辑的情况下擦除数据库清洁的开发环境。
- 像````'''一样,可以与`` - seed''相结合以重新填充数据(例如`迁移:新鲜的 - seed`)。

###更深层解释差异

- 回滚是如何发生的:
- “刷新”和“重置”都依赖于每个迁移的down()方法来撤消模式变化。
- `reset`倒下一切并停止。
- ``刷新''回滚一切,然后再次迁移一切。
- 命令之后数据库状态:
- “重置”后,数据库架构为空(没有迁移的表)。
- ``刷新''之后,重建数据库架构,就好像新鲜迁移一样。
- 数据丢失:
- 两个命令会导致数据丢失,因为所有迁移均已完全回滚。
- ``刷新''可以自动重新引入种子数据,如果使用“ seed”标志。
- 开发生命周期中的用例:
- 在开发或测试迁移时使用`刷新',并且您想重建模式,同时可能还原数据。
- 使用`reset'在手动应用新迁移或运行新的迁移之前完全清除迁移模式。

Laravel开发人员的实用笔记

- 两个命令都取决于与``up()和`down()`方法正确地脚本正确地脚本了,这意味着如果丢失或不完整的方法,则倒回命令(``refresh''reset'和`reset')可能会失败或将数据库留在不合时宜的状态。
- ``刷新''在您想尊重迁移期间回滚逻辑和潜在数据关系的环境中可以认为比``新鲜''更安全。
- 由于所有数据都将丢失,因此在没有备份的情况下,都不应在生产数据库中不小心使用命令。
- 它们主要设计用于频繁练习迭代的本地开发或测试环境中,并且可以在没有后果的情况下重置数据。

### 概括

关键区别是:

- 迁移:刷新 - 回滚所有迁移,然后再次运行所有迁移。
- 迁移:重置 - 回滚所有迁移,但不要重新运行它们。

“迁移:刷新”通过回滚和迁移有效地重建架构,允许重新种子和逐步刷新,而`迁移:重置:reset'只是将数据库返回到无移民状态。

这两个命令都是Laravel开发人员管理数据库版本的基本工具,但它们提供不同的工作流程并对数据库状态产生独特的影响。

这种理解有助于为应用程序开发,测试和部署的不同阶段选择正确的命令。

每个用法都应考虑对数据丢失,应用程序架构一致性以及开发人员在Laravel项目中管理数据库迁移的意图的影响。