在我工作的地方,我们使用这个插件来管理我们的数据库更改。最近,部署我们项目的人在使用该插件时遇到了问题,因为它们正在包含数据的数据库上运行。
例如,当向已存在的表添加一个字段(该字段将成为外键且不能为空)时,如果生产环境中已存在该特定表的数据,通常会出现问题。从空数据库从头到尾运行迁移几乎总是有效,但当有数据时,它充其量似乎是不确定的。
我在互联网上看到的大多数工作流程示例都表明它是在开发过程中使用的,而不是用于部署。我唯一能想到的事情是,协作人员在运行迁移之前将数据转储到自己的表中。
当然,我在这里要求提供工作流程示例,所以我不应该假设。只是有点困惑,如果您正在使用一个包含您不想丢失的数据的环境,那么这有什么好处?
如有任何建议,我们将不胜感激。
最佳答案
嗯,我不确定您为什么会在这里遇到问题。我们一直在使用这个插件来管理我们的部署,并且它在我们部署的所有服务器上都足够流畅(具有数百万条记录)。
我刚刚检查以确保这种情况发生在我们的任何迁移中,并发现它出现了几次,没有任何问题!这是其中一个的副本,它运行顺利并添加了新字段。
'create_field' => array(
'TableName' => array(
'fieldName' => array('type' => 'integer', 'null' => false, 'default' => NULL)
),
),
关于mysql - CakePHP 迁移插件工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26758804/