Once a new content field is created, there is no way to change its machine name from administration area. No worries though, this still could be done quite easily by only few updates directly to the database. Remember however to always dump a backup copy of your database just in case things go wrong, and be really careful when executing those changes!
Let's assume you want to change Drupal 7's default field
field_tags and rename it to singular
field_tag. What you need to do then is:
field_config- update old field name to a new one in
UPDATE field_config SET field_name = 'field_tag' WHERE field_name = 'field_tags';
do the same in table
UPDATE field_config_instance SET field_name = 'field_tag' WHERE field_name = 'field_tags';
RENAME TABLE `field_data_field_tags` TO `field_data_field_tag`;
(pay attention to back quotes, they are important here)
field_data_field_tag- rename column name
ALTER TABLE `field_data_field_tag` CHANGE `field_tags_tid` `field_tag_tid` INT(10) UNSIGNED NULL DEFAULT NULL;
(and yes, you have to include column specification and constraints here, otherwise it will not work)
do the same with
RENAME TABLE `field_revision_field_tags` TO `field_revision_field_tag`; ALTER TABLE `field_revision_field_tag` CHANGE `field_tags_tid` `field_tag_tid` INT(10) UNSIGNED NULL DEFAULT NULL;
remember to clear the caches after all your changes!
Also, if you have any views using any of the old fields, or any other place where the old field name could exist, you need to update them too.
In case of views for example, if you still want to update old field names directly in database (which actually could be faster than doing it from administration area, though not necessarily safer - you need to feel really confident about fiddling with database content directly), you need to update value of
display_options column in
Note that old field name could appear there several times, and also that data in this column is serialized - so if your new field name length is different from the old length, you need to update counter respectively too.
Generally, if you are using anything like phpMyAdmin, it is probably a good idea to run a search on the whole database looking for the old field name to make sure you have not missed anything.