Không thể bỏ bảng vì bảng hiển thị đang chờ khóa dữ liệu meta


11

Chúng tôi đang cố gắng thả một bảng nhưng nó bị treo và khi chúng tôi thấy lệnh 'SHOW PROCESSLIST', nó hiển thị là 'đang chờ khóa dữ liệu meta'. Ngay cả chúng tôi không thể thực hiện bất kỳ hoạt động nào trên bảng cụ thể đó. Có ai biết làm thế nào để giải quyết nó?

Câu trả lời:


8

Nếu một bảng InnoDB đang được truy cập hoàn toàn thông qua CHỌN hoặc DML (CHERTN, CẬP NHẬT, XÓA), bạn sẽ mong đợi một khóa siêu dữ liệu.

Theo Tài liệu MySQL về Khóa MetaData :

Để đảm bảo tính tuần tự hóa giao dịch, máy chủ không được cho phép một phiên thực hiện câu lệnh ngôn ngữ định nghĩa dữ liệu (DDL) trên bảng được sử dụng trong giao dịch chưa hoàn thành trong phiên khác. Máy chủ đạt được điều này bằng cách có được các khóa siêu dữ liệu trên các bảng được sử dụng trong một giao dịch và hoãn phát hành các khóa đó cho đến khi giao dịch kết thúc. Khóa siêu dữ liệu trên bảng sẽ ngăn các thay đổi về cấu trúc của bảng. Cách tiếp cận khóa này có hàm ý rằng một bảng đang được sử dụng bởi một giao dịch trong một phiên không thể được sử dụng trong các báo cáo DDL bởi các phiên khác cho đến khi giao dịch kết thúc.

Điều đó đang được nói, bạn nên xác định liệu một phiên DB khác có giữ các khóa trên bàn hay không. Nếu một phiên như vậy là một giao dịch chưa hoàn thành, đó là nơi có thể giữ lại.

Nếu bạn chỉ cần nhanh chóng quay lại không gian đĩa, bạn có thể chạy TRUNCATE TABLE.

GỢI Ý

Hãy thử đổi tên bảng trước khi thử thả nó như sau:

ALTER TABLE mydb.mytable RENAME mydb.mytabletodrop;
TRUNCATE TABLE mydb.mytabletodrop;
DROP TABLE mydb.mytabletodrop;

Đề nghị đã không làm việc cho chúng tôi. Thay vào đó, chúng tôi nhận được "Đang chờ khóa siêu dữ liệu bảng" khi foođổi tên ALTER TABLEfootodrop
Motin

@Motin tất cả điều đó có nghĩa là một hoặc nhiều Kết nối DB vẫn đang truy cập bảng foo. Một khi tất cả các kết nối đã được thực hiện, sau đó ALTER TABLEcó thể tiến hành.
RolandoMySQLDBA

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.