2010-03-26 79 views
18

我一直在尝试CakePHP的一些迁移脚本,但我遇到了所有这些或其他形式的问题。CakePHP良好的数据库迁移?

请给我一个关于您使用现场和已知作品的Cake的迁移选项的建议。

我想下面的“功能”:

  • 支持CakePHP的1.2(如CakeDCs迁移将只有一个选项时,1.3是稳定的,我的应用程序迁移到新的源代码)
  • 支持(或者至少不停止)具有不同数据库配置的模型。在app /型号的子文件夹
  • 支持模式在插件
  • 支持表不符合蛋糕公约(我有没有一个单一的主键字段,需要一些特殊的表
  • 支持机型以保持它们)
  • 可以通过Capistrano和Git进行自动部署。

我不需要rails风格的版本控制文件一个git版本化的模式文件可以与现有模式相比较。那就是:我喜欢Cake中的SchemaShell,因为它不符合我上面的大多数要求。

我已经看过并测试:

+0

+1,有趣的问题 – 2010-03-26 12:29:50

+0

通过忽略文档并阅读源代码,我发现如何使Schema Shell完成我所需要的大部分工作。 我发现-f不会“强制”生成'来创建新的模式。“。它用于“强制生成所有表到模式中......”。 但不仅如此,这不在文档中:它也可用于强制更新以与生成相同的方式忽略Model类,因此更新使用该选项生成的模式。 – 2010-03-26 13:35:54

+0

@Matin威斯汀 - 为什么不把这些见解贡献给文档维基? – stevenf 2010-03-26 16:47:54

回答

2

我有一个插件,使它成为CakePHP 1.2,你可以看到http://github.com/jrbasso/migrations

它使用蛋糕的样式来做所有的事情。不使用yaml,使用对象来定义表格。你可以从Cake导入模型没有问题...

+0

很酷,我来看看。 – 2010-03-26 13:30:37

4

我试着用我的发现更新这个“主题”后,迅速尝试Juan的插件和所有其他人提到的CakeEx除外...因为我不' t已经为CakePHP 1.3更新了相关应用程序,并且该迁移插件需要1.3

我必须注意,关于失败和插件对我不起作用的评论应该主要读作“不适合我的需要”或“我犯过的错误”同时尝试他们“。在某种程度上,有些人可能会阅读这样的评论,以求对文件进行修改。我并不是说所测试的插件本身就存在缺陷,错误或损坏。我相信,他们都在适当的环境下工作,并为正确的工作流程。

CakePHP的架构壳牌

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

  • 很好的一点。这一点是:

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

CakeDC迁移

  • 听起来像他们拿着架构壳牌和“固定”它。文档解释了一个稍微复杂的过程(至少要解释),但它可能会按我的意愿工作。

YAML,joelmoss和胡安的迁移

  • 这些都共享的版本控制文件的轨道理念和“正在增加”以及它们之间的“击落”。我更喜欢这一点,因为当模式迁移将被更新或回滚而没有对源代码执行相同操作时,我无法看到我的项目的情况。我也可以生活在没有迁移迁移脚本中的现有数据的能力,因为我预见这对我来说非常罕见。

  • 这些都希望我不能通过迁移脚本以外的任何方式触及数据库。我无法打开我最喜欢的MySql-GUI并玩,直到我很高兴,然后通过这些脚本生成“diff”。 (至少我在我的简短测试中没有找到记录的方法。)我必须手动将更改写入YAML或php文件。由于我开始使用大约30个表的现有项目,因此我不赞成手动重写该模式的想法。但是其中一些插件并没有创建一个包含我所有表格的好文件。这也可能是由于我的简短测试和/或无法找到此功能的文档。我没有深入了解大多数这些源代码。

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

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

3

如果你喜欢Rails迁移,请使用Rails Migrations ...看看这个宝石https://github.com/thuss/standalone-migrations。我在日常工作中将这个宝石与cakephp一起使用。

+0

我是Ruby的粉丝。现在必须处理PHP项目。我希望Rails Migrations能够让我的工作变得简单:) – 2012-10-25 17:48:54

0

在这里使用3.x Migrations插件。

其他旧版工具的所有问题都是通过设计来确定的。 它正处于重大的发展阶段,每周都会获得更多功能并进行修复。

您还可以轻松使用现有的1.x和2.x应用程序的新工具。 顺便说一下,我刚刚在how to use 3.x Migrations in 2.x apps上发布了一篇文章。