恢复已删除的字段


11

我有一个具有4个字段的内容类型,每个字段都是一个术语引用。有100个节点,每个节点分配4个术语参考。我无意中从admin> structure> content-types> mycontent-type ...中删除了这些字段之一...导致所有100个节点丢失了该丢失字段所包含的引用术语。

安装数据库管理模块后,我可以看到删除字段的数据库仍然存在,它已重命名为“ field_deleted_field_74”

  1. 使用mysql,我已经能够将此数据库重命名为“ field_data_field_originalname”-即对删除的字段使用原始计算机名
  2. 此外,我已经能够将该数据库中已删除列的值从“ 1”切换为“ 0”。

我已经用另一个我发现的名为“ field_revision_field_74”的“ ghost”数据库完成了上述操作...

我现在的问题是,我的重命名字段在内容类型管理字段显示中或在admin> reports> fields列表中都没有显示为预先存在的字段。当我运行“草场信息字段”时,它也丢失了。

我该如何找回它?我假设存在另一个需要编辑的数据库。

谢谢!


在删除字段之前,您是否有整个数据库的备份?
Ollie 2014年

不幸的是没有。但是,我确实解决了问题。
艾恩·麦特兰2014年

Answers:


14

一个好问题,令人惊讶的是,鉴于数据仍然可用,没有一种更简单的方法来回滚已删除的字段。

假设您有:

  1. 将field_deleted_ *表重命名为field_data_field_myfield和field_revision_field_myfield(后者也很重要)
  2. 在相关数据表中将“已删除”标志从1更新为0。

也有

  • field_config

主要领域配置

  • field_config_instance

特定实体捆绑包上的字段配置。

您可能还需要在此处调整“已删除”标志:

例如:

UPDATE field_config SET deleted = 0 where field_name = 'field_my_deleted_field';
UPDATE field_config_instance SET deleted = 0 where field_name = 'field_my_deleted_field';
TRUNCATE TABLE cache_field;

2
谢谢你的快速反应。编辑field_config和field_config_instance数据库都可以达到目的。
爱因·迈特兰德2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.