Рейтинг:0

Как удалить ложное обновление сущности?

флаг id

Что-то (я не уверен, что именно) внесло в мой сайт Drupal 9 фиктивное обновление сущности. Я хочу удалить обновление, чтобы мне больше не предлагалось его применить.

> драш дентап
тип объекта пользователя:
Поле User ID необходимо обновить.

 Вы хотите запустить все ожидающие обновления? (да/нет) [да]:
 > да

В строке SqlContentEntityStorageSchema.php 1842:

  Хранилище SQL не может изменить схему для существующего поля (uid в пользовательском
   сущность) с данными.

Когда я удаляю все пользовательские данные и повторяю попытку обновления:

> драш дентап
тип объекта пользователя:
Поле User ID необходимо обновить.

 Вы хотите запустить все ожидающие обновления? (да/нет) [да]:
 > да

В строке 50 ExceptionHandler.php:

  SQLSTATE [23000]: нарушение ограничения целостности: 1062 Дублирующаяся запись «0» для ключа «PRIMARY»:
  ALTER TABLE "users" ADD `uid` INT unsigned NOT NULL, ADD PRIMARY KEY (`uid`); Множество()

В StatementWrapper.php строка 116:

  SQLSTATE [23000]: нарушение ограничения целостности: 1062 Дублирующаяся запись «0» для ключа «PRIMARY»

пользователи таблица уже имеет жидкость столбец, который является его первичным ключом, и это обновление объекта всегда будет завершаться ошибкой.

Где хранятся обновления сущностей? Есть ли способ безопасно удалить это обновление из места его хранения?

Рейтинг:4
флаг cn

Это кажется очень странным, как изменилась схема объекта для поля uid?

Итак, вы говорите, что таблицы базы данных пользователей такие же, как и в любой другой установке Drupal?

Что тогда с установленными схемами хранения, для таблиц

\Drupal::keyValue('entity.storage_schema.sql')->get('user.entity_schema_data')

а поле?

\Drupal::keyValue('entity.storage_schema.sql')->get('user.field_schema_data.uid')

Если это единственное, что неправильно, вы можете установить правильные данные:

\Drupal::keyValue('entity.storage_schema.sql')->set('user.entity_schema_data', $данные)

Drupal отслеживает установленные и определенные в коде определения сущностей. Так что, что бы ни сделал неизвестный код, ущерб может быть больше.

флаг id
Значение таблицы в моем экземпляре dev было идентично соответствующему значению в БД для новой установки D9. Однако между значениями полей была разница. Я обновил значение dev для `user.field_schema_data.uid`, чтобы оно соответствовало новому значению установки, и это устранило ошибку отчета о состоянии. Спасибо, [4k4](https://drupal.stackexchange.com/users/47547/4k4), за ваше предложение.
флаг id
Вопросы о том, как была введена разница и что может скрываться в моем экземпляре разработки, остаются. Буду предупреждать о других ошибках.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.