Nội dung bài viết
Giới thiệu
Gần đây mình thấy có nhiều website gặp phải tình trạng không thể lưu được dữ liệu. Cụ thể là khi đăng hoặc cập nhật bài viết, sản phẩm thì không lưu được. Ngoài ra còn có tình trạng khi login vào Admin website thường bị văng không hiểu lý do. Thì sau khi kiểm tra log các website này, mình thấy có một log chung như sau:
WordPress database error Duplicate entry '0' for key 'PRIMARY' for query INSERT INTO wp_usermeta (`user_id`, meta_key, `meta_value`) VALUES (1, '_woocommerce_load_saved_cart_after_login', '1') made by wp_signon, do_action('wp_login'), WP_Hook->do_action, WP_Hook->apply_filters, wc_user_logged_in, update_user_meta, update_metadata, add_metadata
Thì lỗi này là một lỗi cơ sở dữ liệu trong WordPress, cụ thể là lỗi “Duplicate entry ‘0’ for key ‘PRIMARY’”. Lỗi này xảy ra khi có một truy vấn INSERT cố gắng thêm một dòng vào bảng wp_usermeta với giá trị 0 cho cột có khóa chính (PRIMARY KEY), nhưng một dòng với giá trị đó đã tồn tại. Lỗi này có thể gặp ở các table khác nhau, có thể là wp_usermeta (ở trường hợp này) , wp_users, wp_options …vv
Nguyên nhân phổ biến
- ID tự động tăng (AUTO_INCREMENT) bị lỗi hoặc sai cấu hình:
Cột khóa chính trong bảng wp_usermeta thường là một cột meta_id với thuộc tính AUTO_INCREMENT. Nếu giá trị tự động tăng này bị đặt lại về 0 hoặc một giá trị đã tồn tại, nó sẽ dẫn đến lỗi “Duplicate entry”.
- Xung đột dữ liệu:
Lỗi này có thể xảy ra khi có hai hoặc nhiều quá trình hoặc plugin cố gắng thêm cùng một mục dữ liệu vào cơ sở dữ liệu với cùng giá trị cho khóa chính.
- Vấn đề với dữ liệu nhập vào:
Truy vấn INSERT INTO có thể chứa dữ liệu không chính xác hoặc không hợp lệ, khiến cho WordPress hoặc WooCommerce cố gắng chèn một giá trị trùng lặp.
Hướng dẫn xử lý
Bước 1: Truy cập vào phpMyAdmin
Đầu tiên bạn hãy truy cập vào phpMyAdmin trên Hosting/VPS của bạn.
Bước 2: Xử lý table bị báo lỗi
Tiếp đó hãy chọn đúng Database của website (1) >> chọn table bị báo lỗi, ở trường hợp này là wp_usermeta (2)
Lưu ý: Nếu trường hợp của bạn báo lỗi table khác, thì hãy chọn đúng table bị cảnh báo nhé.
Ở giao diện tiếp theo, bạn chọn vào Structure (1) >> Change (2) như hình dưới.
Tiếp tục bạn tick vào ô A_I (1) và nhấn Save (2)
Nếu nhận được thông báo bên dưới là hoàn tất. Bây giờ bạn hãy kiểm tra lại website xem còn bị lỗi nữa không nhé.
Tổng kết
Hy vọng qua bài viết này, các bạn sẽ có thể tự khắc phục được các lỗi liên quan đến mất hoặc trùng lặp khóa chính trên website của mình. Chúc các bạn thực hiện thành công.!