- Issue created by @marksmith
- Status changed to Needs review
about 1 year ago 5:38pm 21 November 2023 - 🇫🇷France lazzyvn paris
Adding new columns is supported.
to delete the data field must be empty: You can backup your field_table_datafield then you can truncate field_table_datafield. Back in the field storage settings you can now delete your columns or change the hostname. then you can restore your field table _datafield - 🇮🇪Ireland marksmith
Thanks for the quick reply! Is there a description how adding a new column to a datafield (already containing data) actually works? As far as I see, this cannot be achieved via the regular UI ("cannot be changed once data has been created").
- 🇫🇷France lazzyvn paris
Sorry I checked aggain You can't add new column because Drupal 10 field base is locked
The SQL storage cannot change the schema for an existing field
you can do by yourself with devel php
$entityType= 'node'; $fieldName= 'field_datas'; $storage_definition = \Drupal::service('entity_field.manager')->getFieldStorageDefinitions($entityType)[$fieldName]; $saveToDefinition = \Drupal::service('entity.last_installed_schema.repository')->setLastInstalledFieldStorageDefinition($storage_definition); $schema = \Drupal::keyValue('entity.storage_schema.sql')->get("$entityType.field_schema_data.$fieldName"); // Change your schemas .... // now save your fields schema \Drupal::keyValue('entity.storage_schema.sql')->set("$entityType.field_schema_data.$fieldName", $field_schema);
- 🇮🇪Ireland marksmith
I started to test this with the (for me) easier solution, the Field storage config export / import.
Unfortunately this solution does not working for me, as it leads to the unable to alter the schema error: "Unexpected error during import with operation update for field.storage.node.field_name: The SQL storage cannot change the schema for an existing field (field_name in node entity) with data."
I suppose that the scenario I am looking for - that one would want to alter the datafield schema already containing data at some future moment - is quite realistic, and it would be ideal to have a UI solution for this. I understand that this would require a good amount of work on this module though. So, thank you for the effort invested thus far.
- 🇫🇷France lazzyvn paris
After some research, Creating a ui to add/remove columns is not easy (most of the difficulty in the drupal core api). Sure I could do it if I had more time, but I'd wait for the client to pay for it. Actually I have 15 customers but they don't want to pay for this feature, for them they almost never change the structure after production. For them, recreating the field is faster than take time developing a feature for its intended use in just a few minutes :).