2011-01-20 164 views
2

索引指數 'users_core' ...
錯誤:索引 'users_core':sql_range_query:表 '/tmp/#sql_ff2_0.MYI' 不正確的密鑰文件;嘗試修復它(DSN = mysql:// root:* @localhost:3306/myname)思考獅身人面像:錯誤而索引

這是什麼意思?
我找不到文件'/tmp/#sql_ff2_0.MYI'
我該如何修復它?

+0

你有沒有解決這個問題?如果是這樣,怎麼樣? – 2011-03-31 20:42:30

+0

尚未修復。我做了一些工作 - 從索引中刪除了一些字段並暫時修復了它。 – 2011-04-06 04:16:10

+0

表名和字段別名之間存在名稱空間衝突 – 2011-04-06 04:17:03

回答

0

I can't find the file '/tmp/#sql_ff2_0.MYI'

這可能是mysql在查詢過程中創建的一些臨時表。

您是否嘗試修復您在sql_range_query中使用的主表?

1

這實際上與Ruby/Rails無關,我只是遇到了這個問題,並且找到了真正的答案時遇到了一些問題。

問題是,sphinx索引器腳本試圖在構建索引時創建臨時MySQL表。在我的情況下的MySQL跑出來的磁盤空間用於臨時表(默認爲/tmp,我的分區僅爲2GB)

在將數據添加到該臨時表和磁盤填充表損壞,因爲最後一位寫入臨時表的數據被截斷。

解決方案是確保MySQL寫入臨時表的驅動器具有足夠的空間。我最終將my.cnf中的臨時目錄更改爲另一個更大的分區。對於在Debian配置文件默認位置是/etc/mysql/my.cnf

地址:把它旁邊的[mysqld]部分datadir設置

tmpdir = /var/lib/mysql/tmp

最佳場所。