【问题标题】:A lot of database migrations files大量的数据库迁移文件
【发布时间】:2017-04-06 11:53:55
【问题描述】:

我正在使用 PHP symfony 框架的数据库迁移,我注意到有很多文件,当我构建我的项目时,每次执行很多文件(迁移)。

管理迁移的最佳做法是什么?我可以删除它们并只创建一个数据库转储文件来启动数据库吗?

【问题讨论】:

  • 你应该为你的开发数据库使用fixtures。

标签: php database symfony migration


【解决方案1】:

我假设您正在使用 Doctrine Migrations 创建这些文件。在 dev 上,您始终可以使用 dictionary:schema:update 命令重新生成数据库。 在设置新实例时,您还可以使用 dictionary:schema:create 命令,该命令还将为您创建最新的表定义。

这让我们想到了你的问题;你需要保留所有的迁移吗?只要您知道迁移已在过时的实例上执行,您就可以安全地归档(我的首选选项)或删除它们,因为它们将永远不会被再次调用。

【讨论】:

  • 是的,我正在使用 Doctrine 迁移,并且在部署到生产之前构建项目时运行它们。我不应该使用迁移来构建项目并更好地使用教义:模式:创建吗?
  • No schema:create 仅用于开发目的,因为它不考虑您的数据。为部署使用迁移执行,为开发/测试创建。
【解决方案2】:

我更喜欢在生产环境中使用迁移而不是教条:模式:更新,因为在更新过程中可能会遇到一些问题。 IMO 始终关注 DB 发生的情况总是一个更好的选择。

在开发环境中,您可以轻松使用学说:模式:更新命令,但您应该在生产环境中使用迁移。在某些情况下,该命令可能会阻止迁移(它发生在我身上几次)。

【讨论】:

  • 好的,但是当你有很多迁移时,你如何管理你的迁移?另外,您如何构建您的项目(如果您在 CI/CD 上构建)?你使用迁移还是模式创建?
  • 你必须有意识地去做它们:) 最好少做迁移(不是单独为表中的每个新字段),而是做一次大迁移。完成功能后,您可以将多个迁移合并为一个,然后再将其推送到主分支。
猜你喜欢
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
相关资源
最近更新 更多