CakePHP的良好数据库迁移?

时间:2010-03-26 10:08:48

标签: database cakephp migration cakephp-1.2

我一直在为CakePHP尝试一些迁移脚本,但是我遇到了所有这些或其他形式的问题。

请告诉我关于您实时使用并了解作品的Cake的迁移选项。

我想要以下“功能”:

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

我不需要rails样式的版本化文件一个git版本化的模式文件,它与现有模式进行实时比较。那就是:我喜欢Cake中的SchemaShell,除了它与我上面的大部分要求不兼容。

我看过并测试过:

5 个答案:

答案 0 :(得分:4)

我会尝试使用我的发现更新这个“主题”,快速尝试Juan的插件和除CakeDC之外的所有其他人提到的...因为我没有更新CakePHP 1.3的相关应用程序和迁移插件需要1.3

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

CakePHP Schema Shell

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

  • 非常有用。那一点是:

  • 似乎不适合自动部署。即update命令只能修改表,不能处理新表或删除表。这些由他们自己的shell命令处理,使得Cap式部署变得复杂。当脚本尝试“更改”不存在的表时,使用新表运行更新也会产生错误。我要注意,如果这是有意或我有问题。 (已经在google小组上询问过没有回复)

CakeDC迁移

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

YAML,joelmoss和juan的迁移

  • 这些都分享了版本化文件的rails概念,以及它们之间的“upping”和“downing”。我更喜欢这个,因为在没有对源代码执行相同的情况下更新或回滚模式迁移时,我无法看到我的项目的情况。我也可以无法迁移迁移脚本中的现有数据,因为我预计这对我来说非常罕见。

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

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

我已在生产环境中使用CakeDC migrations plugin用于1.3.x和2.x并且很高兴。在1.3.x版本中创建迁移有一些错误,但它们很容易修复。

答案 4 :(得分:0)

在此处使用3.x Migrations插件。

其他旧工具的所有问题都是按设计修复的。 它正在大力发展,并且每周都会获得更多功能和修复。

您还可以轻松地将新工具用于现有的1.x和2.x应用。 我顺便在how to use 3.x Migrations in 2.x apps发布了一篇帖子。