Điểm:0

Không thể thêm người dùng mới do lỗi "Vi phạm ràng buộc toàn vẹn: Mục nhập trùng lặp"

lá cờ in

Kể từ ngày 14 tháng 12 năm 2021, trang web của tôi bắt đầu tạo người dùng có ID người dùng thấp, mặc dù ID người dùng được sử dụng nhiều nhất là 9317. Tôi tư tưởng một cái gì đó đã được thay đổi trong bản cập nhật cốt lõi để sử dụng lại ID đã được giải phóng bằng cách hủy tài khoản người dùng. Tuy nhiên, tôi phát hiện ra rằng kể từ ngày đó, trang web đã cố gắng sử dụng lại mọi ID bắt đầu bằng 1.Nhật ký lỗi của tôi chứa đầy các lỗi như thế này:

Drupal\Core\Entity\EntityStorageException: SQLSTATE[23000]: Vi phạm ràng buộc toàn vẹn:
1062 Mục nhập trùng lặp '281' cho khóa 'users.PRIMARY': CHÈN VÀO "người dùng" ("uuid", "langcode")
GIÁ TRỊ (:db_insert_placeholder_0, :db_insert_placeholder_1); Mảng (
[:db_insert_placeholder_0] => 5ff1347c-439f-437e-ba3f-762f7350fda3
[:db_insert_placeholder_1] => vi ) trong Drupal\Core\Entity\Sql\SqlContentEntityStorage->save()
(dòng 811 của /home/drupal/webroot/rsc.byu.edu/web/core/lib/Drupal/Core/Entity/
Sql/SqlContentEntityStorage.php).

Ví dụ trên nói Mục trùng lặp '381'. Lỗi tiếp theo sẽ nói Mục trùng lặp '382' và như thế.

Tôi đã đọc các bài viết đề xuất trình tự bảng chứa giá trị ID người dùng tiếp theo. Của tôi trình tự bảng chứa giá trị 9330, sẽ ổn nếu nó đang được sử dụng. Nhưng không phải vậy.

Điểm:3
lá cờ in

Sau một thời gian dài tìm kiếm, tôi nhận thấy trên một bản sao lưu từ trước ngày 14 tháng 12 năm 2021, người dùng cái bàn uid trường được xác định là Thuộc tính: KHÔNG ĐƯỢC KÝ. NGAY BÂY GIỜ (18 tháng 2 năm 2022), các uid trường được định nghĩa là Thuộc tính: không có gì và bổ sung: AUTO_INCREMENT. AUTO_INCREMENT mới.

Điều này khiến tôi phải thử nghiệm với một bản sao lưu của trang web của mình. Chắc chắn rồi, trước ngày 14 tháng 12 năm 2021, mỗi lần tôi thêm người dùng, giá trị trong trình tự bảng được tăng lên. Điều đó không còn xảy ra trong trang web được cập nhật. Thay vào đó, nó treo như mô tả ở trên.

Giải pháp là chạy truy vấn sau trong cơ sở dữ liệu:

THAY ĐỔI TABLE người dùng AUTO_INCREMENT = 3918; # ID cao nhất hiện có là 3917

Điều này đã giải quyết được vấn đề.Tôi cho rằng trong bản cập nhật cốt lõi được cài đặt vào ngày 14 tháng 12 năm 2021, mã đã thay đổi từ việc sử dụng trình tự bảng để sử dụng AUTO_INCREMENT trên uid lĩnh vực trong người dùng bảng và bằng cách nào đó, tôi đã không thể thực hiện cập nhật cơ sở dữ liệu có thể đặt chính xác giá trị AUTO_INCREMENT trong người dùng table để tránh sự lộn xộn này.

Tôi hy vọng báo cáo về nỗi đau của tôi sẽ giúp được ai đó.

Rod avatar
lá cờ tr
Rod
Sau khi nâng cấp lên Drupal 9.3.12, không thể tạo người dùng mới trên trang web. Thông báo lỗi tôi nhận được khi cố gắng thêm người dùng thông qua trang web hoặc qua drush là: "SQLSTATE[23000]: Vi phạm ràng buộc toàn vẹn: 1062 Mục nhập trùng lặp '220' cho khóa 'user.PRIMARY...". Truy vấn ALTER TABLE của bạn đã lưu ngày và khắc phục sự cố cho tôi. Cảm ơn Marshall!

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