Ist es ein Problem, wenn die Speicherinformationen des Entitätsfelds nicht in der Tabelle key_value registriert sind?

7

Dies ist eine Drupal 8 (Beta 15) -Seite, grundlegende, wenige Inhaltstypen. Auf der Statusberichtsseite heißt es:

Entity/field definitions
    Mismatch detected
    Mismatched entity and/or field definitions.

Nach einer Untersuchung stellte sich heraus, dass dies durch einige Felder verursacht wird. Das Drupal\Core\Entity\EntityDefinitionUpdateManager::getChangeList()meldet sie, weil ihre ursprüngliche Speicherdefinition in der key_valueTabelle für die Spaltensammlung fehlt :entity.storage_schema.sql

(Der config.entity.key_store.field_configEintrag column-collection = ist für alle Felder vorhanden.)

Meine Frage ist - wie können wir das beheben? Die gesamte Konfiguration wird in Konfigurationsdateien (Staging-Verzeichnis) gespeichert - einschließlich aller Felder für XML-Dateien. Der Konfigurationsmanager meldet keinen Unterschied, der Export behält die Dateien bei und der Import ändert nichts. drush updb meldet auch keine Updates.

Gibt es einen Befehl, den wir in einem Update-Hook aufrufen sollten, um diese Speicherinformationen zu synchronisieren / zu registrieren? Irgendeine Idee?

itarato
quelle
Was ist das Ergebnis von getChangeList (), zB welche Felder und wie sind die Status?
Benjamin

Antworten:

3

Es hängt davon ab, was genau von getChangedList () gemeldet wird. Was jedoch passiert, ist, dass ein Modul das Entitätsschema mit folgenden Elementen aktualisieren muss:

\Drupal::entityDefinitionUpdateManager()
->installFieldStorageDefinition('the_field_name', 'node', 'node', $field_storage_definition);

Alles, was Sie wissen müssen, finden Sie im Änderungsdatensatz: https://www.drupal.org/node/2554097

Es werden auch Anstrengungen unternommen, um zusätzliche Informationen auf der Statusseite bereitzustellen: https://www.drupal.org/node/2554911

benjy
quelle
1
Genial, danke. Für den Fall, dass Sie das Snippet vervollständigen möchten, habe ich folgende Definition erhalten: $fieldStorages = \Drupal::entityManager()->getFieldStorageDefinitions($entityTypeID);und\Drupal::entityDefinitionUpdateManager() ->installFieldStorageDefinition($fieldName, 'node', 'node', $fieldStorages[$fieldName]);
itarato