Điểm:0

Làm cách nào để xóa bản cập nhật thực thể giả?

lá cờ id

Một cái gì đó (tôi không chắc là cái gì) đã giới thiệu những gì có vẻ là một bản cập nhật thực thể giả mạo vào trang web Drupal 9 của tôi. Tôi muốn xóa bản cập nhật để không còn bị nhắc áp dụng nó nữa.

> drush denup
loại thực thể người dùng:
Trường ID người dùng cần được cập nhật.

 Bạn có muốn chạy tất cả các bản cập nhật đang chờ xử lý không? (có/không) [có]:
 > vâng

Trong SqlContentEntityStorageSchema.php dòng 1842:

  Bộ lưu trữ SQL không thể thay đổi lược đồ cho một trường hiện có (uid trong user
   thực thể) với dữ liệu.

Khi tôi xóa tất cả dữ liệu người dùng và thử cập nhật lại:

> drush denup
loại thực thể người dùng:
Trường ID người dùng cần được cập nhật.

 Bạn có muốn chạy tất cả các bản cập nhật đang chờ xử lý không? (có/không) [có]:
 > vâng

Trong ExceptionHandler.php dòng 50:

  SQLSTATE [23000]: Vi phạm ràng buộc toàn vẹn: 1062 Mục nhập trùng lặp '0' cho khóa 'PRIMARY':
  ALTER TABLE "người dùng" THÊM `uid` INT unsigned NOT NULL, THÊM KHÓA CHÍNH (`uid`); Mảng()

Trong StatementWrapper.php dòng 116:

  SQLSTATE [23000]: Vi phạm ràng buộc toàn vẹn: 1062 Mục nhập trùng lặp '0' cho khóa 'PRIMARY'

Các người dùng bảng đã có một uid cột là khóa chính của nó và bản cập nhật thực thể này sẽ luôn bị lỗi.

Cập nhật thực thể được lưu trữ ở đâu? Có cách nào để xóa bản cập nhật này khỏi vị trí lưu trữ của nó một cách an toàn không?

Điểm:4
lá cờ cn

Điều này có vẻ rất kỳ lạ, lược đồ thực thể cho trường uid đã thay đổi như thế nào?

Vì vậy, bạn đang nói rằng các bảng cơ sở dữ liệu người dùng giống như trong bất kỳ bản cài đặt Drupal nào khác?

Điều gì sau đó với các lược đồ lưu trữ đã cài đặt, cho các bảng

\Drupal::keyValue('entity.storage_schema.sql')->get('user.entity_schema_data')

và lĩnh vực?

\Drupal::keyValue('entity.storage_schema.sql')->get('user.field_schema_data.uid')

Nếu đây là điều duy nhất sai, bạn có thể đặt dữ liệu chính xác:

\Drupal::keyValue('entity.storage_schema.sql')->set('user.entity_schema_data', $data)

Drupal theo dõi các định nghĩa thực thể được cài đặt so với trong mã được xác định. Vì vậy, bất kể mã không xác định đã làm gì, có thể có nhiều thiệt hại hơn.

lá cờ id
Giá trị bảng trong phiên bản nhà phát triển của tôi giống hệt với giá trị tương ứng trong DB cho bản cài đặt D9 mới. Tuy nhiên, có sự khác biệt giữa các giá trị trường. Tôi đã cập nhật giá trị nhà phát triển cho `user.field_schema_data.uid` để khớp với giá trị cài đặt mới và điều này đã loại bỏ lỗi báo cáo trạng thái. Cảm ơn [4k4](https://drupal.stackexchange.com/users/47547/4k4) vì đề xuất của bạn.
lá cờ id
Các câu hỏi về cách thức tạo ra sự khác biệt và điều gì có thể ẩn giấu trong ví dụ nhà phát triển của tôi vẫn còn đó. Tôi sẽ cảnh báo cho các lỗi khác.

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