【问题标题】:Deleting field from content type and database从内容类型和数据库中删除字段
【发布时间】:2013-10-14 17:39:37
【问题描述】:

当你从 Drupal 7 中删除一个内容类型的字段时,它是否也会从数据库中删除它? 例如,我有一个包含 20 个字段和大约 250000 个节点的内容类型。如果我删除一个字段,它是否也会删除 250000 个字段值?谢谢。

【问题讨论】:

    标签: php drupal drupal-7 content-type


    【解决方案1】:

    是的——该字段中的所有数据都将被删除,因为数据库中包含该数据的表将被删除。

    【讨论】:

    • 这并不完全正确,因为并非总是如此。请查看我对同一问题的回答。
    【解决方案2】:

    当您在 Drupal 7(可能还有 Drupal 8,但我还不确定)中从内容类型中删除字段时,它会脱离您的内容类型,并且您无法再访问数据。然而,如果您有多个节点具有该字段的值,则实际内容可能会在数据库中保留一段时间,在名为 field_deleted_data_<NUMBER> 的表中,其中 <NUMBER> 是您在field_config 表。

    随着时间的推移,数据实际上是通过 hook_cron 从数据库中小批量清除的。每次运行 cron 时删除的数据量在 field_purge_batch_size 变量中定义,默认情况下,该变量的值为 10(在 field.module 中)。当表中没有数据时,剩余的字段配置数据也被删除。

    您可以查看 field_delete_fieldfield_purge_batch 的 Drupal API 文档以获取更多参考。

    【讨论】:

    • 谢谢。这是否意味着每个 cron 周期只会删除 10 行?!如果是这样的话,我可以直接从数据库中删除表吗?
    • 不要那样做!你需要让 Drupal 以自己的方式做事,否则你会遇到不可预测的错误。但是,您可以为 field_purge_batch_size 声明更高的值以加快数据删除速度。
    • 如果你真的想篡改数据库,可以尝试手动TRUNCATE表,让Drupal自己摆脱表。但我不推荐它,我不知道是否会出现任何其他问题。
    • 好的。感谢大家的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多