Điểm:0

Lỗi SQL khi cố xóa trường loại nội dung

lá cờ np

Tôi đang cố tạo một Loại nội dung mới cho trang web của mình và tôi đã chọn một tên trường ("mô tả") đã được sử dụng cho các loại nội dung khác.

Sự cố xảy ra khi lưu các thay đổi vì tên máy cho trường đã tồn tại đối với các trường trong Loại Nội dung khác nhưng với một loại trường khác. Trong các loại Nội dung khác, tôi đã sử dụng loại trường "Văn bản dài" mặc định nhưng trong trường hợp này, tôi đã chọn "Trường đọc thêm" vì nó phù hợp hơn với trường hợp sử dụng của tôi.

Tôi nhận thấy sự cố và quay lại để thay đổi tên máy chỉ để phát hiện ra rằng tôi đã tạo hai trường và một trong số chúng có tên máy gặp sự cố mà tôi đã đề cập trước đó.

Khi cố gắng xóa trường đó, tôi đã truy cập quản trị viên/cấu trúc/loại/quản lý/my_custom_content_type/trường và sử dụng các tùy chọn UI đã chọn "Xóa".

Sau đó, giao diện người dùng quản trị hiển thị cho tôi một màn hình hiển thị các thay đổi mà tôi sắp thực hiện và khi tôi chọn "Chấp nhận", trang web của tôi đưa tôi đến một trang trống với thông báo: "Trang web gặp phải lỗi không mong muốn. Hãy thử một lần nữa sau."

Khi tôi kiểm tra nhật ký, đây là thông báo lỗi mà tôi thấy:

[06-Tháng 11-2021 03:07:49] CẢNH BÁO: [pool www] con 2014 nói vào thiết bị lỗi chuẩn: "LƯU Ý: Thông báo PHP: Ngoại lệ PHP chưa được phát hiện Drupal\Core\Database\DatabaseExceptionWrapper: "SQLSTATE[42S22]: Không tìm thấy cột : 1054 Cột 'field_description_teaser_value' không xác định trong 'mệnh đề where': CHỌN 1 biểu thức AS"
[06-Nov-2021 03:07:49] CẢNH BÁO: [pool www] con 2014 nói thành thiết bị lỗi chuẩn: "TỪ"
[06-Tháng 11-2021 03:07:49] CẢNH BÁO: [pool www] con 2014 nói thành thiết bị lỗi chuẩn: "{node_revision__field_description} t"
[06-Tháng 11-2021 03:07:49] CẢNH BÁO: [pool www] con 2014 nói vào thiết bị lỗi chuẩn: "WHERE (field_description_teaser_value IS NOT NULL) OR (field_description_teaser_format IS NOT NULL) OR (field_description_hidden_value IS NOT NULL) OR (field_description_hidden_format IS CÓ GIÁ TRỊ)"
[06-Tháng 11-2021 03:07:49] CẢNH BÁO: [pool www] con 2014 nói vào thiết bị lỗi chuẩn: "HẠN CHẾ 1 BÙA 0; Mảng"
[06-Nov-2021 03:07:49] CẢNH BÁO: [pool www] con 2014 nói thành thiết bị lỗi chuẩn: "("
[06-Nov-2021 03:07:49] CẢNH BÁO: [pool www] con 2014 nói thành thiết bị lỗi chuẩn: ")"
[06-Nov-2021 03:07:49] CẢNH BÁO: [pool www] con 2014 đã nói thành thiết bị lỗi chuẩn: "" tại /var/www/html/web/core/lib/Drupal/Core/Database/Connection.php dòng 701"
2021/11/06 03:07:49 [lỗi] 2010#2010: *21776 FastCGI được gửi trong thiết bị lỗi chuẩn: "Thông báo PHP: Ngoại lệ PHP chưa bắt được Drupal\Core\Database\DatabaseExceptionWrapper: "SQLSTATE[42S22]: Không tìm thấy cột: 1054 Cột 'field_description_teaser_value' không xác định trong 'mệnh đề where': CHỌN 1 biểu thức AS
TỪ
{node_revision__field_description} t
Ở ĐÂU (field_description_teaser_value KHÔNG NULL) HOẶC (field_description_teaser_format KHÔNG NULL) HOẶC (field_description_hidden_value KHÔNG NULL) HOẶC (field_description_hidden_format KHÔNG NULL)
GIỚI HẠN 1 BÙM 0; Mảng
(
)
" tại /var/www/html/web/core/lib/Drupal/Core/Database/Connection.php dòng 701" trong khi đọc tiêu đề phản hồi từ thượng nguồn, máy khách: 172.18.0.6, máy chủ: , yêu cầu: "NHẬN /admin/ cấu trúc/loại/quản lý/my_custom_content_type/fields/node.my_custom_content_type.field_description/storage HTTP/1.1", ngược dòng: "fastcgi://unix:/run/php-fpm.sock:", máy chủ lưu trữ: "custom-site.ddev .site", liên kết giới thiệu: "https://custom-site.ddev.site/admin/structure/types/manage/my_custom_content_type/fields"

Khi tung ra phpmyadmin, không có tên cột nào được liệt kê trong mệnh đề where tồn tại trong node_revision__field_description table vì các cột đó được tạo cho một loại trường khác.

Tại thời điểm này, tôi không thể tạo bất kỳ nội dung nào bằng Loại nội dung này và tôi muốn xóa nội dung đó và bắt đầu lại từ đầu bằng cách tạo một nội dung mới có tên máy tốt hơn và cố gắng tránh những lỗi đó.

Câu hỏi của tôi là: có cách nào an toàn để xóa loại nội dung bằng cách sử dụng SQL hoặc drush không? Tôi đã cố xóa nó qua giao diện quản trị nhưng kết quả là lỗi tương tự như khi tôi cố xóa trường.

lá cờ cn
Làm thế nào ban đầu bạn cố gắng loại bỏ nó? Trước tiên, bạn phải luôn sử dụng quản lý giao diện người dùng/cấu hình của quản trị viên.
pazitos10 avatar
lá cờ np
@PatrickKenny, cảm ơn vì nhận xét. Tôi đã cập nhật câu hỏi của mình để thêm một số giải thích rõ ràng nhưng tl; dr sẽ là: để cố gắng xóa nó, tôi đã sử dụng quản lý giao diện người dùng/cấu hình của quản trị viên.
Điểm:0
lá cờ np

Tôi đã giải quyết được vấn đề của mình bằng cách thêm thủ công các cột bị thiếu vào các bảng có liên quan bằng cách sử dụng phpmyadmin.

Đầu tiên:

  • Đã tạo bản sao lưu db (đề phòng).

Thứ hai, tôi đã tạo một bản sao của các bảng có liên quan và chuyển các bản sao đó sang một db khác để duy trì cả dữ liệu và cấu trúc:

  • node_revision__field_description
  • node__field_description

Sau khi sao lưu xong, tôi tiến hành tạo các cột bị thiếu và sao chép các thuộc tính của chúng từ các cột tương tự trong các bảng khác (được tạo cho các Loại Nội dung khác).

Sau đó, tôi đã xóa Loại nội dung qua giao diện người dùng quản trị mà không gặp bất kỳ sự cố nào.

Cuối cùng, tôi đã khôi phục các bản sao gốc của các bảng vào db, thay thế các phiên bản đã sửa đổi của chúng.

Tôi biết đây có lẽ không phải là giải pháp tốt nhất cho mọi người nhưng nó hiệu quả với tôi.

Đă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.