Tôi đang gặp sự cố với bảng InnoDB (bảng đã được khởi tạo MyISAM, nhưng đã chuyển đổi nó sang InndoB một thời gian trước); Tôi cố gắng để chạy truy vấn này:Tệp khóa không chính xác với MySQL
SELECT
posts.id,
posts.post_title
FROM
rss_posts AS posts
INNER JOIN rss_feeds AS feeds ON posts.blog_id=feeds.id
WHERE
feeds.blog_language=1
ORDER BY
posts.post_date_db DESC
LIMIT
10;
tôi nhận được lỗi này:
Query : SELECT posts.id,posts.post_title FROM rss_posts AS posts INNER JOIN vw_rss_feeds AS feeds ON posts.blog_id=feeds.id WHER...
Error Code : 126
Incorrect key file for table '/tmp/#sql_7375_0.MYI'; try to repair it
tôi không thể chạy một sửa chữa trên các bảng có liên quan; tuy nhiên tôi đã chạy một KIỂM TRA trên cả hai bảng & chúng xuất hiện tốt. Tôi cũng đã làm một TỐI ƯU HÓA trên cả hai bảng & CŨNG xây dựng lại các bảng bằng cách làm dưới đây ..
INSERT INTO new_table SELECT * FROM old_table;
sau đó tôi đổi tên bảng mới với tên bảng cũ ..... nhưng tôi vẫn còn có vấn đề mà .
Để thử & con số ra những gì bảng đã gây ra nó tôi loại bỏ các mã trong các truy vấn tham khảo "rss_feeds" bảng .... vì vậy bây giờ các truy vấn trông như thế này ..
SELECT
posts.id,
posts.post_title
FROM
rss_posts AS posts
ORDER BY
posts.post_date_db DESC
LIMIT
10;
Đó làm việc.
Vì vậy, vấn đề là một cái gì đó với bảng rss_feeds. Vì vậy, sau đó tôi figured tôi sẽ chuyển đổi các bảng trở lại để MyISAM & chạy một sửa chữa & sau đó chuyển đổi trở lại InnoDB ..... này làm việc tạm thời, nó đã trở lại bình thường .... sau đó nó đã phá vỡ một lần nữa .. Logged ... sửa chữa nó một lần nữa, phá vỡ một lần nữa .... bây giờ sửa chữa dường như không làm việc cả.
Bây giờ, tôi biết, tôi biết ...... Tôi đã tìm kiếm vấn đề này trên Google đã ...... Tôi nhận thấy rằng tính chính xác của thời gian vấn đề là có chúng tôi không đủ không gian trong MySQL tạm thời thư mục .... nhưng tôi đã có máy chủ để thay đổi thư mục tạm thời để một cái gì đó với một LOT nhiều không gian & vấn đề vẫn còn.
Tôi nghĩ HOST là đổ lỗi cho & nó VẪN là một vấn đề với thư mục tạm thời; tại sao? Bởi vì sau khi tôi nhận được nó làm việc một lần nữa tôi bắt đầu thêm dữ liệu vào bảng rss_posts một lần nữa & do đó JOIN sẽ nhận được LARGER & MySQL một lần nữa sẽ chạy ra khỏi không gian .... bạn nghĩ sao?
Cảm ơn bạn - chắc chắn có đủ dung lượng đĩa trống; về cơ bản dẫn chương trình nói này .. "The '/ var/tmp' phân vùng sử dụng không gian giống như '/', và thông tin sử dụng của nó hiện như sau; /dev/sda3 442G 130g 289G 32%/ Vì vậy, bạn không nên nhìn thấy bất kỳ vấn đề với không gian. " Mặc dù tôi tự hỏi liệu có lẽ bản thân/var/tmp/dir bị giới hạn không? Nếu điều đó thậm chí có thể. Vì vậy, truy vấn bạn có ở đó - về cơ bản chỉ nhận được 10 bài đăng cuối cùng trong 30 ngày qua? – Brett
Đúng. Bạn có thể parametrize "30" để làm cho rằng một chút rộng hơn. Nhưng bất kể không gian đĩa có sẵn nếu bạn liên tục phân loại toàn bộ hai bảng cho 10 hàng, bạn sẽ chạy vào các vấn đề về tỷ lệ và hiệu suất. –
Yep ... bạn làm cho một điểm tốt. Cảm ơn rất nhiều! – Brett