Từ một tập lệnh, tôi đã gửi một truy vấn như thế này hàng ngàn lần đến cơ sở dữ liệu cục bộ của mình:
update some_table set some_column = some_value
Tôi đã quên thêm phần ở đâu, do đó, cùng một cột được đặt thành cùng một giá trị cho tất cả các hàng trong bảng và điều này được thực hiện hàng ngàn lần và cột được lập chỉ mục, vì vậy chỉ mục tương ứng có thể được cập nhật quá nhiều lần .
Tôi nhận thấy có gì đó không ổn, vì mất quá nhiều thời gian, vì vậy tôi đã giết kịch bản. Tôi thậm chí đã khởi động lại máy tính của mình kể từ đó, nhưng một cái gì đó bị kẹt trong bảng, vì các truy vấn đơn giản mất rất nhiều thời gian để chạy và khi tôi thử bỏ chỉ mục có liên quan thì nó thất bại với thông báo này:
Lock wait timeout exceeded; try restarting transaction
Đó là một bảng innodb, vì vậy giao dịch bị kẹt có lẽ là ẩn. Làm cách nào để sửa bảng này và xóa giao dịch bị kẹt khỏi bảng?
SHOW FULL PROCESSLIST
gì?