功能如何管理内容类型字段更改?

问题描述:

我很喜欢对内容类型字段(从节点引用到文本字段)进行更改,这会在合并重新创建的功能时导致错误。该错误是功能如何管理内容类型字段更改?

FieldException: Cannot change an existing field's type. in field_update_field() (line 234 of /var/www/htdocs/modulesfieldfield.crud.inc) 

目前,这只是影响一个合并到开发人员的工作区和临时环境是从GIT一个干净的构建,因此不受影响。但它在制定更新流程时提出了一个早期标志。

在生产中,我认为这将是管理该内容类型的每个实例的导出,删除内容类型,安装重新创建的功能,将导出的数据迁移到重构的内容类型,然后应用任何可能为此更改而定义的测试。

建议的最佳实践过程是什么,即从一开始就要遵循的标准?

非常感谢提前

最好的方法是标记您的功能的版本。

  • 第一个版本:您的旧领域,它的数据
  • 第二个版本:旧的字段定义和新的。 在此版本中,您可以迁移hook_update_N()中旧字段中包含的数据。
  • 第三个版本:简单地删除旧的字段定义

我希望已经回答了你希望

+0

非常感谢勒布,非常类似于数据库refactoring.Also被打从调整的文本字段您的问题一旦添加了一些开发数据,默认255从低到31。因为它将该字段创建为一个表列,所以它不会允许更改它可以改变其下表的位置的更改。您提出的解决方案同样适用。非常感谢,再次。 – 2012-04-05 09:49:51