Ich habe einen Inhaltstyp mit einer Feldkarte, deren Typ Text ist ( normal , lang) . Ich musste es in Text (normal) ändern .
Also habe ich diese SQL-Anweisung gemacht:
ALTER TABLE node__field_maps MODIFY field_maps_value VARCHAR(200);
Es scheint, dass field_type in geändert wurde VARCHAR(200)
, aber es gibt noch ein weiteres Problem: Auf den Registerkarten Inhaltstyp und Felder verwalten wird das Feld weiterhin als Text (normal, lang) angezeigt .
Wie ändere ich es in Text (normal) ?
Antworten:
Ich habe auch diese Art von Problem, das den Feldtyp mit vorhandenen Daten von einem zum anderen ändert. Wie @Eyal bereits erwähnt hat, können wir einen Update-Hook an schreiben
Hier ist das Codebeispiel
HINWEIS: Sichern Sie immer die Datenbank und den Testcode, bevor Sie diesen Code ausführen
Andere Gedanken In meinem Fall haben wir auch Konfigurationen exportiert, was bedeutet, dass der Feldtyp und die Einstellungen auch in den Konfigurationsdateien field_storage_config, field_config, entity_form_display und entity_view_display enthalten sind. Daher müssen wir auch die Konfigurationseinstellungen in diesen Dateien aktualisieren. Ein einfacher Weg könnte sein:
Dieser Code wurde von @drugan im Beitrag https://www.drupal.org/node/2816859 inspiriert
quelle
Ich hatte ein ähnliches Problem. Nach dem Ausführen des beschriebenen update_hook wurde auf der Statusübersichtsseite immer noch die Meldung "Nicht übereinstimmende Entitäts- und / oder Felddefinitionen" angezeigt. Ich denke, es lag daran, dass Drush Entup in Drupal 8.7 entfernt wurde. Ich konnte dies lösen, indem ich ein Update von FieldStorageDefinition wie folgt manuell erzwang:
quelle