Я обновил свой сайт 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()
Я думаю, что это может быть что-то еще в сущностях Конфигурационный файл также нужно изменить, но я не знаю, где и что менять.
Любая помощь будет высоко ценится.