2011-01-20 162 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

最佳场所。