Có vấn đề gì không khi thông tin lưu trữ trường thực thể không được đăng ký trong bảng key_value?


7

Đây là trang web Drupal 8 (beta 15), cơ bản, ít loại nội dung. Trên trang báo cáo trạng thái có ghi:

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

Sau khi điều tra hóa ra, điều này được gây ra bởi một vài lĩnh vực. Họ Drupal\Core\Entity\EntityDefinitionUpdateManager::getChangeList()đang báo cáo cho họ, vì định nghĩa lưu trữ ban đầu của họ bị thiếu trong key_valuebảng cho bộ sưu tập cột:entity.storage_schema.sql

(Bộ sưu tập cột = config.entity.key_store.field_configmục nhập có sẵn cho tất cả các trường.)

Câu hỏi của tôi là - làm thế nào chúng ta có thể khắc phục điều này? Tất cả cấu hình được lưu trữ trong các tệp cấu hình (thư mục dàn) - bao gồm tất cả các trường tệp yml. Trình quản lý cấu hình báo cáo không có sự khác biệt, xuất sẽ giữ các tệp giống nhau và nhập sẽ không thay đổi bất cứ điều gì. Cập nhật drush sẽ báo cáo không có cập nhật là tốt.

Có một lệnh chúng ta nên gọi trong một bản cập nhật để đồng bộ hóa / đăng ký thông tin lưu trữ này? Bất kỳ ý tưởng?


Kết quả của getChangeList (), ví dụ: trường nào và trạng thái là gì?
benjy

Câu trả lời:


3

Nó sẽ phụ thuộc vào chính xác những gì được báo cáo từ getChangedList () nhưng điều đang xảy ra là một mô-đun cần cập nhật lược đồ thực thể với một cái gì đó như:

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

Mọi thứ bạn cần biết đều có trong hồ sơ thay đổi: https://www.drupal.org/node/2554097

Ngoài ra còn có một nỗ lực đang được tiến hành để cung cấp thêm thông tin trên trang trạng thái: https://www.drupal.org/node/2554911


1
Rực rỡ, cảm ơn bạn. Trong trường hợp bạn muốn làm cho đoạn trích hoàn thành, đây là cách tôi có định nghĩa: $fieldStorages = \Drupal::entityManager()->getFieldStorageDefinitions($entityTypeID);\Drupal::entityDefinitionUpdateManager() ->installFieldStorageDefinition($fieldName, 'node', 'node', $fieldStorages[$fieldName]);
itarato
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.