8

I tried creating a field, but my server crapped out halfway with an Internal Server Error due to some spambot attack...

Now, when I try to add the field again, I am getting:

The machine-readable name is already in use. It must be unique.

I guess some tables were populated in the db. How can I remove these easily?

27

You can also use drush to run field_delete_field(). Just run:

drush eval 'field_delete_field("yourfield")'
  • 1
    Good call, much cleaner than hunting through the db. Run cron afterwards too or field_purge_batch(). – littledynamo Aug 4 '14 at 10:04
  • 2
    This is excellent! FYI that function doesn't completely delete the data. It adds a db table for each field whose name begins "field_deleted_data_". That's probably a good thing. But folks might want to finish the job by dropping those tables. – Shai Jul 16 '15 at 15:18
  • 1
    Data for deleted fields is purged during cron runs. Please do not drop those tables, as it could WSOD your drupal site. – aaronbauman Sep 16 '15 at 15:37
4

Wow creating a field takes like 2 seconds ... but if it crapped out, i guess it crapped out.

Since you dont know "where" it crapped out basically you'll have to look for the tables to be sure you clean out whatever IS there ...

  • Drop the tables field_data_FIELD_THE_NAME_YOU_GAVE_IT and field_revision_FIELD_THE_NAME_YOU_GAVE_IT.

  • Also in field_config and field_config_instance look for name keys (and the bundle keys) for the field + bundles you tied the named field to. Delete those entries in those 2 tables as well.

  • Clear your site cache.

  • 1
    Please do not do this. See answer below: field_delete_field() which will invoke any relevant hooks and clean up cache as well. In general, if you are writing SQL or operating directly in the database, you're doing something wrong. – aaronbauman Sep 16 '15 at 15:35
  • 1
    If the addition of fields failed in the UI. Why would you assume the API will still work to delete malformed data/tables? I agree with your overall reply, I disagree with it for 100% of all cases. – tenken Sep 16 '15 at 15:52
  • You're right - i did not thoroughly read the original question. My bad! Preferred method is to use field_delete_field(), but if it fails then going directly to the database is probably the best / only alternative. – aaronbauman Sep 16 '15 at 20:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.