Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL - Sửa lỗi - Mục nhập trùng lặp lỗi cơ sở dữ liệu WordPress cho khóa CHÍNH cho truy vấn CHÈN VÀO wp_options

Như nhiều bạn đã biết rằng blog này chạy trên WordPress và dưới lớp vỏ của WordPress có cơ sở dữ liệu MySQL. Cơ sở dữ liệu MySQL khá tốt và có thể chứa lượng truy cập lớn mà blog này nhận được hàng ngày. Tuy nhiên, cũng giống như bất kỳ cơ sở dữ liệu nào, MySQL cũng cần được điều chỉnh cũng như quản lý giống nhau. Trong bài đăng trên blog này, chúng ta sẽ thảo luận về cách tôi nhận được một lỗi rất lạ là Lỗi cơ sở dữ liệu WordPress và cách tôi giải quyết nó.

Tuần trước, tôi đột nhiên nhận được cuộc gọi từ một người bạn rằng blog của chúng tôi tải rất chậm. Vâng, khi một bài đăng blog mới được xuất bản hoặc bản tin được gửi đi, chúng ta rất thường thấy lưu lượng truy cập tăng đột biến và hiệu suất trang web chậm lại trong giây lát. Tuy nhiên, trong trường hợp này, trang web liên tục chạy chậm. Sau một thời gian, chúng tôi tìm thấy một số vấn đề mới trên trang web. Do hiệu suất chậm, chúng tôi cũng phát hiện ra rằng trình lập lịch của WordPress không xuất bản các bài đăng blog mới cũng như không thực hiện sao lưu hệ thống thường xuyên.

Sau khi chẩn đoán cẩn thận, tôi phát hiện ra rằng vấn đề là với Cơ sở dữ liệu MySQL. Khi tôi kiểm tra nhật ký lỗi, tôi đã tìm thấy lỗi sau trong nhật ký.

[T6 09/09/2016 04:58:03 2016] [error] [client] Lỗi cơ sở dữ liệu WordPress Bản sao mục nhập '3354142' cho khóa 'CHÍNH' cho truy vấn CHÈN VÀO wp_options (option_name , option_value, autoload) VALUES (…)

Rõ ràng là đã có vi phạm khóa chính trong bảng tùy chọn. Tuy nhiên, vấn đề không dễ giải quyết vì cá nhân tôi chưa thực hiện bất kỳ giao dịch nào với bảng này hoặc không có bản cập nhật mới hoặc thay đổi plugin trong thời gian gần đây. Nỗ lực đầu tiên của tôi là khôi phục bảng cụ thể này từ bản sao lưu cơ sở dữ liệu cũ hơn (tôi thường xuyên sao lưu trang web của mình và cơ sở dữ liệu của nó). Ngay cả sự cố cụ thể này cũng không thành công và tôi không thể loại bỏ lỗi.

Cuối cùng, tôi đã tìm kiếm trên internet nhưng than ôi, không có trợ giúp thực sự. Vào thời điểm đó, tôi quyết định thử và sai khác nhau. Hãy tin tưởng ở tôi, tôi dành hơn 4 giờ và nhiều thủ thuật khác nhau để loại bỏ lỗi này. Tôi thấy rất rõ ràng đó là lỗi toàn vẹn lôgic trên cơ sở dữ liệu, tôi phải dành thời gian cho rất nhiều bảng và lôgic. Vâng, sau 4 giờ, cuối cùng tôi đã tìm ra giải pháp và đó là một giải pháp rất đơn giản. Tôi ước gì tôi đã biết điều này sớm hơn và sẽ không mất hơn 4 giờ cho các thử nghiệm và lỗi khác nhau.

Giải pháp / Khắc phục:

Tôi chỉ chạy theo lệnh và sự cố của tôi đã được giải quyết.

REPAIR TABLE wp_options

Thế là xong! Nó đã được thực hiện.

Thực tế là bảng của tôi đã bị hỏng và do cùng một lý do mà tôi gặp phải lỗi liên quan đến Khóa trùng lặp cho bảng cơ sở dữ liệu của mình. Sau khi tôi sửa lỗi bảng, mọi thứ hoạt động tốt. Hãy nhớ rằng, trong trường hợp của tôi, đó là bảng wp_options đã bị hỏng, bạn phải thay thế nó bằng tên bảng của mình và tập lệnh sẽ hoạt động tốt.

Ngoài ra, nếu bạn chỉ muốn sửa chữa tất cả các bảng trong cơ sở dữ liệu của mình, bạn có thể thực thi tập lệnh sau và nó sẽ tạo tập lệnh cho mọi bảng trong cơ sở dữ liệu MySQL của bạn. Sau khi thực thi tập lệnh, bạn sẽ sửa chữa mọi bảng trong cơ sở dữ liệu của mình.

SELECT CONCAT('repair table ', table_name, ';') 
FROM information_schema.tables 
WHERE table_schema='YourDatabaseName';

Tôi hy vọng bạn thấy bài đăng trên blog này hữu ích. Nếu bạn gặp bất kỳ sự cố nào với cơ sở dữ liệu WordPress MySQL, hãy liên hệ với tôi, tôi sẽ sẵn lòng giúp bạn giải quyết bất kỳ lỗi nào liên quan đến lỗi tương tự.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ruby on Rails 3 Không thể kết nối với máy chủ MySQL cục bộ thông qua socket '/tmp/mysql.sock' trên OSX

  2. Định dạng biến MySQL cho danh sách giá trị NOT IN

  3. Có thể thực thi một chuỗi trong MySQL không?

  4. Làm thế nào để ĐẶT HÀNG BẰNG SUM () trong MySQL?

  5. Cách thêm dấu phân tách vào chuỗi nối trong MySQL - CONCAT_WS ()