Я не могу решить свою проблему, несмотря на ответы, которые я смог найти во время моего исследования.
Я создал пользовательский объект "пробел".
Я добавил поля для этого объекта на экране "Управление полями" (UI).
Теперь я хочу применить эти изменения в производственной среде с GIT.
Я экспортировал конфигурацию объекта и его полей (* .yml файлы).
Я создал "hook_update_N" для импорта конфигурации:
/**
* Create "space" Entity.
*/
function lw_space_update_8001()
{
$update_manager = \Drupal::entityDefinitionUpdateManager();
$active_storage = \Drupal::service('config.storage');
$config_path = drupal_get_path('module', 'lw_space') . '/config/install';
// Get config storage and config name
$source = new FileStorage($config_path);
// Check if the table exists first. If not, then create the "Space" entity.
if(!db_table_exists('lw_space'))
{
\Drupal::entityTypeManager()->clearCachedDefinitions();
\Drupal::entityDefinitionUpdateManager()
->installEntityType(\Drupal::entityTypeManager()->getDefinition('lw_space'));
}
// Get config objects
if (!empty($objects = $source->listAll()))
{
foreach ($objects as $name)
{
// Write config
$active_storage->write($name, $source->read($name));
}
}
}
После «git pull ...» я запускаю следующие команды на производственном сервере:
drush en devel_entity_updates
drush updb
drush entity-updates
drush pmu devel_entity_updates, devel
drush cr
Поля хорошо созданы в базе данных (новые таблицы), и они отображаются на « Экран управления полями.
Но когда я хочу удалить поле из экрана «Управление полями», отображается следующая ошибка:
SQLSTATE [42S02]: базовая таблица или представление не найдены : 1146 Таблица 'my_database.field_deleted_data_cghdb5247' не существует
Я не понимаю причину этой ошибки.
Я думаю, что мой метод экспорта конфигурации поля пользовательского объекта заключается в неправильно?
Спасибо за вашу помощь.