如何手动或以编程方式删除字段?


8

我尝试创建一个字段,但是由于一些spambot攻击,我的服务器中途出现了内部服务器错误...

现在,当我尝试再次添加该字段时,我得到:

机器可读的名称已在使用中。它必须是唯一的。

我猜有些表已填充到数据库中。如何轻松删除这些?


Answers:


27

您还可以使用drush运行field_delete_field()。赶紧跑:

drush eval 'field_delete_field("yourfield")'

1
好话,比在数据库中搜寻要干净得多。之后也运行cron或field_purge_batch()。
littledynamo 2014年

2
太好了!仅供参考,该功能不会完全删除数据。它为名称以“ field_deleted_data_”开头的每个字段添加一个数据库表。那可能是一件好事。但是人们可能希望通过删除这些表来完成工作。
Shai 2015年

1
在cron运行期间,将清除已删除字段的数据。请不要删除这些表,因为它可能对您的drupal网站WSOD。
aaronbauman 2015年

4

哇,创建一个字段需要2秒钟的时间……但是,如果它崩溃了,我想它就会崩溃了。

由于您根本不知道它在哪里,因此您必须查找表以确保清除其中的所有信息。

  • Drop桌子field_data_FIELD_THE_NAME_YOU_GAVE_ITfield_revision_FIELD_THE_NAME_YOU_GAVE_IT

  • 此外,在field_configfield_config_instance查找name键(和bundle田间+捆绑你命名字段绑键)。还要删除这两个表中的那些条目。

  • 清除您的网站缓存。


1
请不要这样做。请参阅下面的答案:field_delete_field(),它将调用任何相关的钩子并清除缓存。通常,如果您正在编写SQL或直接在数据库中进行操作,那么您在做错什么。
aaronbauman 2015年

1
如果在UI中添加字段失败。您为什么会认为该API仍然可以删除格式错误的数据/表?我同意您的总体答复,对于所有案例的100%,我都不同意。
tenken 2015年

您是对的-我没有完全阅读原始问题。我的错!首选方法是使用field_delete_field(),但是如果失败,则直接进入数据库可能是最好的/唯一的选择。
aaronbauman
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.