2011-01-20 5 views
2

インデックスインデックス 'users_core' ...
ERROR:インデックス 'users_core':sql_range_query:テーブル '/tmp/#sql_ff2_0.MYI' の不正なキーファイル。修復してみてください(DSN = mysql://ルート:* @localhost:3306/myname)考えるスフィンクス:中にエラーが発生しましたインデックス

これはどういう意味ですか?
ファイル '/tmp/#sql_ff2_0.MYI'を見つけることができません
修復はどうすればできますか?

+0

これを修正しましたか?もしそうなら、どうですか? –

+0

は未定です。私はいくつかのフィールドをインデックスから削除し、一時的に固定したように、いくつかの作業を行った。 –

+0

テーブル名とフィールドエイリアス名の間に名前空間の競合がありました –

答えて

0

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

これは、クエリ中にmysqlが作成する一時テーブルです。

sql_range_queryで使用するメインテーブルを修復しようとしましたか?

+0

ここにも同じ一時ファイルがありません。私は修理を試みたが運がなかった –

1

これは実際にはRuby/Railsとは関係がありません。私はこれを自分自身に実行してしまって、本当の答えを見つけるのにかなり苦労しました。

問題は、インデックス作成中にsphinxインデクサスクリプトが一時的なMySQLテーブルを作成しようとしていることです。私の場合、MySQLはテンポラリテーブルのディスク領域を使い果たしました(デフォルトは/tmp、私のパーティションは2GBのみでした)

データがこの一時テーブルに追加され、ディスクがいっぱいになると、 tempテーブルに書き込まれたデータの一部が切り捨てられます。

解決策は、MySQLが一時テーブルを作成してドライブに十分なスペースを確保することです。私はmy.cnfの一時ディレクトリを別の大きなパーティションに変更しました。 Debianの上の設定ファイルのデフォルトの場所は/etc/mysql/my.cnf

追加された:それを置くため

tmpdir = /var/lib/mysql/tmp

ベストな場所は[mysqld]セクションでdatadir設定の隣にあります。

+0

私は実稼働環境で同じ問題を抱えていた。/tmpのスペースを解放するか、ドライブのサイズを大きくする必要があります – dabobert

関連する問題