思考Sphinx:索引时出错

时间:2011-01-20 11:39:40

标签: ruby-on-rails sphinx thinking-sphinx

索引索引'users_core'...
错误:index'users_core':sql_range_query:表'/tmp/#sql_ff2_0.MYI'的密钥文件不正确;尝试修复它(DSN = mysql:// root: * @localhost:3306 / myname)

这意味着什么?
我找不到文件'/tmp/#sql_ff2_0.MYI'
我该如何修理?

2 个答案:

答案 0 :(得分:1)

这实际上与Ruby / Rails无关,我自己遇到了这个问题并且在找到真正的答案时遇到了很多麻烦。

问题是sphinx索引器脚本在构建索引时尝试创建临时MySQL表。在我的情况下,MySQL用完了临时表的磁盘空间(默认为/tmp,我的分区只有2GB)

当数据被添加到此临时表并且磁盘已填满时,表会损坏,因为写入临时表的最后一位数据会被截断。

解决方案是确保MySQL正在编写临时表的驱动器上有足够的空间。我最终将my.cnf中的临时目录更改为另一个更大的分区。 debian上配置文件的默认位置是/etc/mysql/my.cnf

添加:

tmpdir = /var/lib/mysql/tmp

放置它的最佳位置位于datadir部分的[mysqld]设置旁边。

答案 1 :(得分:0)

  

我找不到该文件   '/tmp/#sql_ff2_0.MYI'

这可能是mysql在查询期间创建的一些临时表。

您是否尝试修复在sql_range_query中使用的主表?