Puncte:0

Eroare ciudată „Definiții de entitate și/sau câmp nepotrivite”.

drapel tn

Știu că există o mulțime de alte fire despre asta, dar cred că al meu este unul ciudat și mi-am petrecut ultima zi depanând cauza fără noroc până acum, așa că sperând că cineva cu mai multe cunoștințe despre scheme/stocare pe teren mă poate ajuta.

În primul rând, un mic context despre ceea ce fac. Am un set de configurații care este împachetat folosind modulul de caracteristici și implementat ca pachet pe o serie de alte site-uri ale noastre. O parte a acestui set de caracteristici sunt o serie de tipuri de feed pentru importarea conținutului în noduri. Când implementez această funcție pe un singur site, primesc eroarea „Definiții de entitate și/sau câmp nepotrivite” pentru câmpul feeds_item. Pe celălalt site pe care îl implementez, nu primesc nicio eroare. Faptul că greșește pe una, dar nu pe cealaltă este ciudat.

Definiții de entități și/sau câmpuri nepotrivite

Am urmărit problema până la SqlContentEntityStorageSchema::requiresFieldStorageSchemaChanges. În special, ceea ce se întâmplă este că valoarea de $installed_schema este o matrice goală pe site cu eroare, dar are date pe site fără eroare.

  /**
   * {@inheritdoc}
   */
  funcția publică necesităFieldStorageSchemaChanges(FieldStorageDefinitionInterface $storage_definition, FieldStorageDefinitionInterface $original) {
    $table_mapping = $this->getTableMapping($this->entityType);

    dacă (
      $definiție_storage->hasCustomStorage() != $original->hasCustomStorage() ||
      $definiție_storage->getSchema() != $original->getSchema() ||
      $definiție_storage->isRevisionable() != $original->isRevisionable() ||
      $table_mapping->allowsSharedTableStorage($storage_definition) != $table_mapping->allowsSharedTableStorage($original) ||
      $table_mapping->requiresDedicatedTableStorage($storage_definition) != $table_mapping->requiresDedicatedTableStorage($original)
    ) {
      returnează TRUE;
    }

    if ($storage_definition->hasCustomStorage()) {
      // Câmpul are stocare personalizată, așa că nu știm dacă există o modificare a schemei
      // este necesar sau nu, dar din moment ce conform verificărilor inițiale de mai devreme
      // funcția, nimic din definiția schimbată pe care o gestionăm, noi
      // returnează FALSE.
      returnează FALSE;
    }

    $schema_actuală = $this->getSchemaFromStorageDefinition($storage_definition);
    $this->processFieldStorageSchema($schema_actuală);
    $installed_schema = $this->loadFieldSchemaData($original);
    $this->processFieldStorageSchema($installed_schema);

    returneaza $schema_actuala != $schema_instalata;
  }

Dacă verific în interiorul valoare cheie tabel cu aceste interogări selectați * din key_value unde colecția ca „entity.storage_schema.sql” și numele ca „node.field_schema_data.feeds_item”; este, de asemenea, gol pe 1, dar nu pe celălalt:

Deci, undeva, schema nu a fost instalată corect pe un site. O pot repara instalând devel-entity-updates modul sau scrierea unui cârlig de actualizare care pur și simplu salvează definiția existentă de stocare a câmpului, dar sper că cineva are o perspectivă despre De ce asta se intampla. Mulțumesc!

N.B Site-ul cu erori ruleaza pe Drupal 9.2.10 în timp ce site-ul fără erori rulează 9.2.11 dar nu sunt sigur că asta face diferența.

De asemenea, ar trebui să subliniez că câmpurile sunt de fapt instalate bine și funcționează. Problema este doar eroarea de nepotrivire.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.