Điểm:2

Sự cố khi xóa mô-đun thu thập trường

lá cờ cn

Gần đây, chúng tôi đã di chuyển thành công phiên bản drupal 8 từ mô-đun thu thập trường (bản alpha mới nhất) sang đoạn văn. Bây giờ tôi đang cố xóa mô-đun bộ sưu tập trường khỏi phiên bản drupal của chúng tôi, nhưng không thể xóa mô-đun này vì nó "được sử dụng trong trường field_collection_item.field_sprechzeiten_zeitraum" (xem ảnh chụp màn hình từ chế độ xem gỡ cài đặt).

gỡ cài đặt field_collection bị ngăn chặn

Khi tôi cố xóa trường này field_sprechzeiten_zeitraum, thông báo lỗi sau được hiển thị:

Drupal\Core\Database\DatabaseExceptionWrapper: SQLSTATE[42S02]: Không tìm thấy bảng cơ sở hoặc dạng xem: 1146 Bảng 'druco_stage.field_collection_item__field_sprechzeiten_zeitraum' không tồn tại: CHỌN 'entity_id' TỪ {field_collection_item__field_sprechzeiten_zeitraum} WHERE 'bundle' = 'field_sprechzeiten'; Mảng ( ) trong field_collection_field_config_predelete() (dòng 95 của mô-đun/contrib/field_collection/field_collection.module).

Có vẻ như ai đó đã cố xóa mục này trước đó và đã xảy ra lỗi, vì mục nhập cơ sở dữ liệu đã bị xóa nhưng không phải tất cả các tham chiếu khác hoặc mục nhập không được tạo ngay từ đầu.

Vì tôi không phải là nhà phát triển drupal và chỉ quản trị trang web này nên tôi khá mù mờ về cách xử lý. Tôi chỉ muốn mô-đun field_collection biến mất, có ai biết cách giải quyết vấn đề này không?

hotwebmatter avatar
lá cờ nr
Tôi rất vui vì câu trả lời của tôi đã giúp bạn đi đúng hướng! Tuy nhiên, như @leymannx đã đề xuất trong các nhận xét bên dưới, tốt hơn hết bạn nên cắt phần "Chỉnh sửa:" khỏi câu hỏi ở trên và dán vào câu trả lời bên dưới, mặc dù bạn đã chấp nhận câu trả lời của tôi. Điều này sẽ giúp những người trong tương lai tìm kiếm giải pháp cho một vấn đề tương tự. Vui lòng xem xét nó! Cảm ơn trước.
Điểm:1
lá cờ cn

Tôi đã giải quyết vấn đề bằng cách tạo một bảng mới theo đề xuất của hotwebmatter. Nó khá dễ dàng vì tôi có thể sử dụng cấu trúc của các trường bộ sưu tập trường khác và chỉ cần đổi tên trường giá trị. Cấu trúc trông như thế này:

field_collection_item__field_sprechzeiten_zeitraum: bảng
+ cột
    gói: varchar(128)
    đã xóa: tinyint(4) NN
    entity_id: int(10) NN
    bản sửa đổi_id: int(10)
    mã ngôn ngữ: varchar(32) NN
    đồng bằng: int(10) NN
    field_sprechzeiten_zeitraum_value: varchar(255)
+ chỉ số
    gói: chỉ mục (bó) loại btree
    bản sửa đổi_id: chỉ mục (bản sửa đổi_id) loại btree
+ phím
    #1: PK (entity_id, đã xóa, langcode, delta)

Sau khi tạo điều này, tôi đã xóa các thực thể của bộ sưu tập trường (có một liên kết trong phần gỡ cài đặt) và xóa các trường còn lại trong các loại nội dung của tôi. Hộp kiểm để gỡ cài đặt mô-đun vẫn bị tắt, vì vậy tôi đã xóa mọi bảng trong cơ sở dữ liệu chứa field_deleted_data và field_deleted_revision. Điều này không giúp được gì, vì vậy tôi đã tìm kiếm trong bảng cấu hình dòng có tên core.extension. Ở đây tôi đã giải tuần tự hóa dữ liệu, loại bỏ phần có bộ sưu tập trường và sắp xếp lại dữ liệu theo thứ tự.

Ở giữa, tôi luôn chạy công việc định kỳ và xóa bộ đệm. Hộp kiểm để gỡ cài đặt vẫn bị tắt và tình cờ tôi thấy hộp kiểm thu thập trường đó trong phần cài đặt mô-đun không được chọn nữa. Tôi đã kiểm tra nó và cố gắng cài đặt nó. Nó bắt đầu và sau đó tôi được chuyển tiếp đến phần cài đặt mô-đun. bộ sưu tập trường vẫn chưa được chọn và khi tôi kiểm tra tab gỡ cài đặt thì cuối cùng nó đã biến mất.

Điều này thật mệt mỏi, nhưng với một kết thúc có hậu.

Điểm:1
lá cờ nr

Bạn có bản sao lưu cơ sở dữ liệu cũ nào không? Bạn có thể tạo một bản sao của trang web trong môi trường phát triển cục bộ và khôi phục phiên bản cũ của cơ sở dữ liệu để xem liệu các bảng bị thiếu có thể được tạo lại hay không, cho phép bạn loại bỏ trường_bộ sưu tập mô-đun.

Nói chung, bạn không nên thực hiện những thay đổi như vậy trực tiếp trong cơ sở dữ liệu (có thể đó là điều ai đó đã làm để tạo ra sự cố ngay từ đầu) nhưng bạn có thể tạo một bảng trống có cùng cấu trúc bằng cách phân tích bảng trong sao lưu cũ:

MÔ TẢ field_collection_item__field_sprechzeiten_zeitraum;

Được trang bị thông tin này, bạn có thể tạo cấu trúc bảng phù hợp trong cơ sở dữ liệu sản xuất -- một lần nữa, làm việc trong một bản sao cục bộ thay vì trên máy chủ sản xuất.

Nếu không có bản sao lưu phù hợp, bạn có thể sử dụng trường_bộ sưu tập mô-đun để thêm field_collection_item__field_sprechzeiten_zeitraum đến field_sprechzeiten bó. (Bạn sẽ không thể tạo lại nội dung trường theo cách này, nhưng bạn vẫn đang cố xóa nó.)

Khi bảng bị thiếu tồn tại (ngay cả khi nó trống), bạn có thể xóa trường mà không gặp lỗi và gỡ cài đặt mô-đun. Chúc may mắn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.