Hướng dẫn fix lỗi Waiting for table metadata lock

by admincp
25 Xem

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 TABLESELECT * 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.

Screenshot 2020 12 26 at 10.55.02

Mình truy cập vào mysql để Kill các Process này

[root@vinastar ~]# 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.

Waiting for table metadata lock

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

Waiting for table metadata lock

Sau đó bạn click vào Thao tác để thay đổi.

Waiting for table metadata lock

Ở 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.

Waiting for table metadata lock

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ụ

Waiting for table metadata lock

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é.

Waiting for table metadata lock

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.

Bài viết liên quan

Leave a Comment