FieldStorageDefinitionUpdateForbiddenException: хранилище SQL не может изменить схему для существующего поля - PullRequest
0 голосов
/ 24 апреля 2020

Я обновил свой сайт Drupal8 с 8.4.8 до 8.5.11, однако, когда я запустил команду drush entup Она показывает следующие ошибки:

    The following updates are pending:

block_content entity type : 
  The block_content.field_micro_head_menu field needs to be updated.
node entity type : 
  The node.field_restricted_match_centre field needs to be updated.
site_setting_entity entity type : 
  The site_setting_entity.field_footer_menu field needs to be updated.
  The site_setting_entity.field_nw_footer_menu field needs to be updated.
menu_link_content entity type : 
  The Menu field needs to be updated.
Do you wish to run all pending updates? (y/n): y
Drupal\Core\Entity\Exception\FieldStorageDefinitionUpdateForbiddenException: The SQL storage cannot change the schema     [error]
for an existing field (field_micro_head_menu in block_content entity) with data. in
Drupal\Core\Entity\Sql\SqlContentEntityStorageSchema->updateDedicatedTableSchema() 

Решение, которое я пробую, это исследовать изменения базы данных. Какие изменения ожидают обновления, вносимые в базу данных, и затем я создаю update function в моем файле .install пользовательского модуля, чтобы вручную применить требуемые изменения.

Я обнаружил, одно из необходимых изменений reduce a field size в одной из таблиц от 255 до 32. Вот мой пользовательский модуль, я добавляю следующий код, чтобы вручную применить изменение базы данных:

    function mymodule_release_update_8020() {

          $schema = \Drupal::database()->schema();
          $spec = [
            'field_micro_head_menu_target_id' => '',
            'type' => 'varchar',
            'length' => 32,
            'default' => '',
            'not null' => TRUE,
          ];
          $schema->changeField('block_content__field_micro_head_menu', 'field_micro_head_menu_target_id', 'field_micro_head_menu_target_id', $spec);
}

Я повторно импортирую свою базу данных, и она выполняет мою функцию update , Затем я проверяю таблицу базы данных, и изменение было успешно применено. Однако, когда я снова запустил команду обновления сущностей drush entup, она по-прежнему показывает ту же ошибку, даже если изменение базы данных есть.

Drupal\Core\Entity\Exception\FieldStorageDefinitionUpdateForbiddenException: The SQL storage cannot change the schema     [error]
for an existing field (field_micro_head_menu in block_content entity) with data. in
Drupal\Core\Entity\Sql\SqlContentEntityStorageSchema->updateDedicatedTableSchema() 

Я думаю, что это может быть что-то еще в сущностях Конфигурационный файл также нужно изменить, но я не знаю, где и что менять.

Любая помощь будет высоко ценится.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...