Có thời gian nên review lại DB để xóa bớt các bảng không dùng đến nữa. Đầu tiên là lấy ra các bảng ko có dữ liệu
SELECT * FROM information_schema.`TABLES` WHERE TABLE_ROWS = 0 AND TABLE_SCHEMA = 'your_db';
Rà soát code để đảm bảo ko có phần nào dùng đế bảng đó nữa (select, insert, update)
OK, sau đó xóa đi và lướt qua hệ thống, theo dõi log xem có phát sinh vấn đề gì ko.
Mọi thứ tưởng êm xuôi nhưng rồi thấy QA báo "Base table or view not found: 1146 Table 'your_db.users' doesn't exist (SQL: update `orders` set `order_session` = VlBU5YTrXnBgh2m where `order_id` = 15039831)' in /data/www/..." Như vậy là dev rà soát chưa kỹ rồi. Xóa mất bảng users và giờ hệ thống lỗi. Nhưng nhìn lỗi báo kìa, có gì đó sai sai. Câu lệnh SQL chả liên quan gì bảng users, đang tác động lên bảng orders cơ mà. Thế là thế nào nhỉ?
À hóa ra thủ phạm giấu mặt là trigger. Khi bảng orders có thay đổi thì đang có 1 trigger thay đổi lên bảng users. Và vì bảng users bị xóa rồi nên lỗi là đương nhiên. Okie, vậy giờ xóa nốt trigger đi là xong
DROP TRIGGER IF EXISTS luu_thoi_gian_giao_dich_gan_nhat;