Tôi đã thay đổi datadir của một cài đặt MySQL và tất cả các cơ sở di chuyển chính xác ngoại trừ một cơ sở. Tôi có thể kết nối và USE
cơ sở dữ liệu. SHOW TABLES
cũng trả lại cho tôi tất cả các bảng một cách chính xác và các tệp của mỗi bảng tồn tại trên thư mục dữ liệu MySQL.
Tuy nhiên, khi tôi thử SELECT
một cái gì đó từ bảng, tôi nhận được thông báo lỗi rằng bảng không tồn tại. Tuy nhiên, điều này không có ý nghĩa vì tôi có thể hiển thị cùng một bảng thông qua SHOW TABLES
tuyên bố.
Tôi đoán là SHOW TABLES
liệt kê sự tồn tại của tệp nhưng không kiểm tra xem tệp có bị hỏng hay không. Do đó, tôi có thể liệt kê các tệp đó nhưng không truy cập được.
Tuy nhiên, nó chỉ là một dự đoán. Tôi chưa bao giờ nhìn thấy điều này trước đây. Bây giờ, tôi không thể khởi động lại cơ sở dữ liệu để thử nghiệm, nhưng mọi ứng dụng khác sử dụng nó đều chạy tốt. Nhưng đó chỉ là dự đoán, tôi chưa bao giờ thấy điều này trước đây.
Có ai biết tại sao điều này xảy ra?
Thí dụ:
mysql> SHOW TABLES;
+-----------------------+
| Tables_in_database |
+-----------------------+
| TABLE_ONE |
| TABLE_TWO |
| TABLE_THREE |
+-----------------------+
mysql> SELECT * FROM TABLE_ONE;
ERROR 1146 (42S02): Table 'database.TABLE_ONE' doesn't exist