Ошибка при просмотре списка терминов таксономии


Я получаю "неожиданную ошибку" при попытке просмотреть список терминов таксономии. Я недавно обновился до версии 8.7, хотя у меня такое чувство, что проблема возникла еще до обновления. Вот ошибка, как она появляется в watchdog:

Drupal\Ядро\База данных\databaseexceptionwrapper: SQLSTATE[42000]: Синтаксическая ошибка или нарушение доступа: 1064 У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на правильность синтаксис для использования рядом') В КАЧЕСТВЕ выражения ИЗ tfr INNER JOIN tr НА tfr. = тр. И tr. = 0 ВНУТРЕННЕЕ СОЕДИНЕНИЕ (S' в строке 1: ВЫБЕРИТЕ tfr.tid КАК tid, МАКС(tfr.) КАК выражение ИЗ {}tfr ВНУТРЕННЕЕ СОЕДИНЕНИЕ {}tr НА tfr. = тр. И tr. = 0 ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБЕРИТЕ t.tid КАК tid, t.langcode КАК langcode, MAX(t.) КАК выражение ИЗ {} t, ГДЕ t. = :db_condition_placeholder_0 ГРУППИРОВАТЬ ПО t.tid, t.langcode) mr НА tfr. = мистер. И tfr.langcode = ГРУППА mr.langcode ПО tfr.tid; Массив ([:db_condition_placeholder_0]=> 1) в Drupal\таксономия\Хранилище терминов->gettermidswithpendingrevisions() (строка 404 из/Applications/MAMP/htdocs/libnews/core/modules/taxonomy/src/TermStorage.php).

И я не знаю, связано ли это, но я также получаю ошибку, когда пытаюсь обновить свою базу данных с помощью drush:

Ошибка: Вызов функции-члена getKey() при нулевом значении в system_update_8702() (строка 2278 из /Applications/MAMP/htdocs/libnews/core/модули/система/system.install) #0

Это за пределами моего область знаний, так что я в тупике.

Author: berramou, 2019-05-02

2 answers

Я тоже получил аналогичную ошибку на своем сервере. Мне пришлось изменить функцию в TermStorage.php чтобы заставить его работать.

Просто предупреждение, этот основной взлом и должен быть отменен, как только он будет исправлен в ядре. Замените getTermIdsWithPendingRevisions() следующим:

  public function getTermIdsWithPendingRevisions() {
$table_mapping = $this->getTableMapping();
$id_field = $table_mapping->getColumnNames($this->entityType->getKey('id'))['value'];
$revision_field = $table_mapping->getColumnNames($this->entityType->getKey('revision'))['value'];
$rta_field = $table_mapping->getColumnNames($this->entityType->getKey('revision_translation_affected'))['value'];
$langcode_field = $table_mapping->getColumnNames($this->entityType->getKey('langcode'))['value'];
$revision_default_field = $table_mapping->getColumnNames($this->entityType->getRevisionMetadataKey('revision_default'))['value'];

$query = $this->database->select($this->getRevisionDataTable(), 'tfr');
$query->fields('tfr', [$id_field]);
$query->addExpression("MAX(tfr.$revision_field)", $revision_field);

$query->join($this->getRevisionTable(), 'tr', "tfr.$revision_field = tr.$revision_field AND tr.$revision_default_field = 0");

$inner_select = $this->database->select($this->getRevisionDataTable(), 't');
$inner_select->condition("t.$rta_field", '1');
$inner_select->fields('t', [$id_field, $langcode_field]);
$inner_select->addExpression("MAX(t.$revision_field)", $revision_field);
$inner_select
  ->groupBy("t.$id_field")
  ->groupBy("t.$langcode_field");

$query->join($inner_select, 'mr', "tfr.$revision_field = mr.$revision_field AND tfr.$langcode_field = mr.$langcode_field");

$query->groupBy("tfr.$id_field");
return 0;
//return $query->execute()->fetchAllKeyed(1, 0);

}

 1
Author: Albert, 2019-05-06 17:42:28

У меня есть ядро Drupal версии 8.7.2 и drush updb -y исправлена ошибка:

Модуль таксономии: Обновите термины таксономии, чтобы их можно было пересматривать. Удалите свойство "иерархия" из словарей.

 0
Author: Achraf JEDAY, 2019-07-23 20:51:29