【发布时间】:2013-10-14 17:39:37
【问题描述】:
当你从 Drupal 7 中删除一个内容类型的字段时,它是否也会从数据库中删除它? 例如,我有一个包含 20 个字段和大约 250000 个节点的内容类型。如果我删除一个字段,它是否也会删除 250000 个字段值?谢谢。
【问题讨论】:
标签: php drupal drupal-7 content-type
当你从 Drupal 7 中删除一个内容类型的字段时,它是否也会从数据库中删除它? 例如,我有一个包含 20 个字段和大约 250000 个节点的内容类型。如果我删除一个字段,它是否也会删除 250000 个字段值?谢谢。
【问题讨论】:
标签: php drupal drupal-7 content-type
是的——该字段中的所有数据都将被删除,因为数据库中包含该数据的表将被删除。
【讨论】:
当您在 Drupal 7(可能还有 Drupal 8,但我还不确定)中从内容类型中删除字段时,它会脱离您的内容类型,并且您无法再访问数据。然而,如果您有多个节点具有该字段的值,则实际内容可能会在数据库中保留一段时间,在名为 field_deleted_data_<NUMBER> 的表中,其中 <NUMBER> 是您在field_config 表。
随着时间的推移,数据实际上是通过 hook_cron 从数据库中小批量清除的。每次运行 cron 时删除的数据量在 field_purge_batch_size 变量中定义,默认情况下,该变量的值为 10(在 field.module 中)。当表中没有数据时,剩余的字段配置数据也被删除。
您可以查看 field_delete_field 和 field_purge_batch 的 Drupal API 文档以获取更多参考。
【讨论】:
field_purge_batch_size 声明更高的值以加快数据删除速度。
TRUNCATE表,让Drupal自己摆脱表。但我不推荐它,我不知道是否会出现任何其他问题。