18

我一直在为 CakePHP 尝试一些迁移脚本,但我遇到了所有以某种形式出现的问题。

请就您在现场使用并知道工作的 Cake 的迁移选项向我提供建议。

我想要以下“功能”:

  • 支持 CakePHP 1.2(例如,只有在 1.3 稳定并且我的应用程序迁移到新的代码库时,CakeDCs 迁移才会成为一个选项)
  • 支持(或至少不停止)具有不同数据库配置的模型。
  • 支持 app/models 子文件夹中的模型
  • 插件中的支持模型
  • 支持不符合 Cake 约定的表(我有几个特殊的表,没有单个主键字段,需要保留)
  • 通过 Capistrano 和 Git 进行自动化部署时效果很好。

我不需要 Rails 样式的版本化文件,一个 git 版本化的模式文件可以与现有模式进行实时比较。那就是:我喜欢 Cake 中的 SchemaShell,除了它不符合我上面的大多数要求。

我已经查看并测试过:

4

5 回答 5

4

在快速尝试了 Juan 的插件和所有其他提到的除了来自 CakeDC 的插件之后,我将尝试用我的发现更新这个“主题”......因为我没有为 CakePHP 1.3 更新相关的应用程序,并且迁移插件需要 1.3

我必须注意,关于失败和插件不适合我的评论应该主要被理解为“不适合我的需要”或“我在尝试它们时犯的错误”。在某种程度上,有些人可能会将此类评论视为对文档进行修订的请求。我并不是暗示测试的插件本质上是有缺陷的、错误的或损坏的。我确信它们都在正确的环境和正确的工作流程下工作。

CakePHP 模式外壳

  • 有我喜欢的简单概念。Schema 链接到用于管理其修订的代码和 SCM。

  • 效果很好。那一点是:

  • 似乎不适合自动部署。即更新命令只能修改表,不能处理新的或删除的表。这些是由它们自己的 shell 命令处理的,这使得 Cap 风格的部署变得复杂。当脚本尝试“更改”不存在的表时,使用新表运行更新也会产生错误。我注意到这是有意的还是我遇到的问题。(在google群里问过,还没有回复)

CakeDC 迁移

  • 听起来他们拿走了 Schema Shell 并“修复”了它。文档解释了一个稍微复杂的过程(至少解释一下),但它可能会按我的意愿工作。

YAML、joelmoss 和 juan 的迁移

  • 这些都共享版本文件的 Rails 概念以及它们之间的“上升”和“下降”。我不太喜欢这样,因为我看不到我的项目在不对源代码执行相同操作的情况下更新或回滚架构迁移的情况。我也可以不用在迁移脚本中迁移现有数据的能力,因为我预见到这对我来说是非常罕见的情况。

  • 这些都希望我不要通过迁移脚本以外的任何其他方式接触数据库。在我满意之前,我无法打开我最喜欢的 MySql-GUI 并四处玩耍,然后通过这些脚本生成一个“差异”。(至少在我的简短测试中我没有找到记录的方法。)我必须在 YAML 或 php 文件中手动编写更改。由于我开始使用大约 30 个表的现有项目,我不喜欢手动重写该模式的想法。但是其中一些插件并没有为我的所有表创建一个好的起点文件。这也可能是由于我的简短测试和/或无法找到此类功能的文档。我没有深入研究其中大部分的源代码。

我的下一步似乎是将我的项目更新到 CakePHP 1.3 并尝试最后一个插件。但我不知道我什么时候有时间。(即没有人屏住呼吸)

如果您认为我误解了这些插件中的任何一个是如何工作的,并且可以就如何使它们为我工作提供帮助。我很乐意回复评论。

于 2010-03-31T12:20:23.433 回答
3

如果您喜欢 Rails 迁移,请使用 Rails Migrations...看看这个 gem https://github.com/thuss/standalone-migrations。我在日常工作中使用这个 gem 和 cakephp。

于 2012-05-09T16:59:28.720 回答
2

我有一个适用于 CakePHP 1.2 的插件,你可以在http://github.com/jrbasso/migrations中看到

它使用蛋糕风格制作所有东西。不使用 yaml,使用对象来定义表。您可以毫无问题地从 Cake 导入模型...

于 2010-03-26T13:16:48.737 回答
1

我在生产环境中使用了适用于 1.3.x 和 2.x的CakeDC 迁移插件,并且很高兴。在 1.3.x 版本中存在一些与创建迁移相关的错误,但它们很容易修复。

于 2012-06-29T18:02:28.427 回答
0

在此处使用 3.x迁移插件。

其他旧工具的所有问题都已通过设计解决。它正在大力开发,每周都会获得更多功能和修复。

您还可以轻松地将新工具用于现有的 1.x 和 2.x 应用程序。顺便说一下,我刚刚发布了一篇关于如何在 2.x 应用程序中使用 3.x 迁移的帖子。

于 2016-10-06T20:35:48.850 回答