使用CakePHP架构和迁移管理数据

时间:2014-06-18 18:40:34

标签: cakephp migration schema

我理解蛋糕模式管理在生成,创建,更新,转储等方面是如何工作的。我的问题是如何在进行迁移时正确维护我的数据版本以及表结构?显然,例如,当创建旧模式时,会删除并重新创建表,从而导致数据丢失。也许这不是一个cakephp特定的问题,但是什么是管理/保护您的数据版本的最佳方法,同时仍然有一个强大的方法来回退到您的架构的不同版本?是否只是假设我定期备份/导出我的数据库?有没有办法以编程方式使用before / after方法来提取现有数据并在创建模式时恢复该数据?我知道有代码可以插入行,但我无法真实地为不断变化的大型数据库创建它。

可以理解的是,删除的列/表中的数据无法恢复,但我是新手并试图将我的大脑包含在不丢失表格/列中的数据的概念中,这些数据在使用cakephp创建模式时保持不变。感谢任何用于管理模式+数据的cakephp特定工作流程或该主题的任何其他通用建议。

1 个答案:

答案 0 :(得分:2)

请改用CakeDC migrations plugin。它不会丢弃整个数据库,并且每次迁移都会保留一个迁移文件。 迁移默认情况下会保留您的数据,他们正在更改架构,当您删除字段或更改字段时,预计数据会被删除或更改。 负责创建备份。

迁移工具不是备份工具。

应该通过某个脚本部署应用程序,或者至少有一些脚本可以在执行迁移之前触发以创建数据库的备份。无论您使用什么程序(例如Liquibase)或CakePHP插件。最佳做法是在部署任何新版本之前进行数据库备份,即使不涉及迁移也是如此。不只是迁移可以改变数据库,但是例如搞乱你的价格计算的错误也会导致混乱。

迁移插件和架构shell在回调之前和之后提供。您可以在那里实现自定义逻辑,通过shell_exec()触发外部bash脚本,以在之前的回调中备份数据库。 See the callbacks for the migration plugin here