Vừa rồi mình gặp gặp một lỗi khá oái ăm khi truy cập vào website, hiện lỗi error establishing a database connection
. Sau khi mình kiểm tra thông tin kết nối database vào chuổi kết nối trong file wp-config.php
thì hoàn toàn chính xác. Kiểm tra tiếp dịch vụ mysqld thì vẫn đang hoạt động.
Tiếp theo mình sử dụng lệnh mysqladmin pr
để xem processlist
thì nhận thấy như ảnh sau. Rất nhiều process từ user data này. Ở đây hiện lên các cột bao gồm
- State: Waiting for table metadata lock
- Info: Đa số là ALTER TABLE và SELECT * FROM của table _wc_admin_notes. Đây là table của woocommerce.
Khi đã xác định được nguyên nhân từ table này mình thực hiện xử lý như sau.
Mình truy cập vào mysql để Kill các Process này
[root@dotrungquan ~]# mysql #Lệnh truy cập vào mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 6879733 Server version: 10.3.27-MariaDB-cll-lve MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> kill 5971336; #Lệnh này để kill ID của process trên Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]> kill 6428269;
Khi khi đã KILL hoàn tất bạn chờ ít phút để hệ thống xử lý và kiểm tra lại với lệnh show full processlist;
. Khi đó các process đã không còn nữa.
Bước tiếp theo mình sẽ thực hiện chuyển đổi kiểu bảng dữ liệu từ MyISAM sang InnoDB cho table wc_admin_notes này. Bạn hãy truy cập vào phpMyAdmin chọn Database mà website đang lỗi và chọn table _wc_admin_notes
Sau đó bạn click vào Thao tác để thay đổi.
Ở dòng Bộ máy lưu trữ bạn thay đổi từ MyISAM thành InnoDB và click Thực hiện để lưu các thay đổi.
Và bước cuối dùng là cập nhật lại cơ sở dữ liệu trong woocommerce. Bạn thực hiện như sau.
Bạn đăng nhập vào admin của website. Chọn WooCommerce => Tình trạng => Công cụ
Sau đó bạn di chuyển xuống sẽ thấy dòng Cập nhật Database bạn click vào Cập nhật database nhé. Thao tác này sẽ chạy ngầm nên bạn không cần lo lắng và kiểm tra lại sau một ít thời gian nhé.
Nếu máy chủ bạn có hỗ trợ WP-CLI bạn sử dụng lệnh sau để cập nhât
wp wc update
Như vậy là mình đã hướng dẫn fix lỗi Waiting for table metadata lock hoàn tất. Nếu bạn còn cách nào khác hay hơn hoặc nhanh hơn xin chia sẻ lại với mình nhé.
Còn bây giờ xin chào tạm biệt và chúc bạn thực hiện thành công.