我使用Passenger(v2.2.9),Thinking Sphinx(v1.3.14)和MySQL(v5.0.77)接管了在Rails(v2.3.5)上运行Ruby(v1.8.5)的Red Hat Enterprise Linux 5系统-log)。我知道他们都已经过时了,但那不是问题所在。
该系统的用户已注意到最近输入的数据未显示在旧数据等查询上。例如,这是查找旧数据时日志中的一个片段:
7 Query SELECT * FROM `patients` WHERE (`patients`.`id` = 618) 7 Query SELECT count(*) AS count_all FROM `notes` WHERE (patient_id = 618) 7 Query SELECT * FROM `notes` WHERE (`notes`.`id` IN (2238,2237,2092,2088)) 7 Query SHOW FIELDS FROM `categories` 7 Query SELECT * FROM `categories` WHERE (`categories`.`id` = 3) 7 Query SELECT * FROM `users` WHERE (`users`.`id` = 2) 7 Query SELECT * FROM `categories` WHERE (`categories`.`id` = 2) 7 Query SELECT * FROM `categories` WHERE (`categories`.`id` = 1) 7 Query SELECT * FROM `users` WHERE (`users`.`id` = 6) 7 Query BEGIN 7 Query UPDATE `sessions` SET `data` = '[removed]\n', `updated_at` = '2013-04-12 20:08:26' WHERE `id` = 1836 7 Query COMMIT
因此,MySQL正在为患者618返回四个注释(ID为2238,2237,2092和2088)。
另一方面,如果我选择上周二加入系统的病人,我知道有三个与他相关的笔记,我明白了:
8 Query SELECT * FROM `patients` WHERE (`patients`.`id` = 1157) 8 Query SELECT count(*) AS count_all FROM `notes` WHERE (patient_id = 1157) 8 Query BEGIN 8 Query UPDATE `sessions` SET `data` = '[removed]=\n', `updated_at` = '2013-04-12 20:19:00' WHERE `id` = 1836 8 Query COMMIT
缺少整个“SELECT * FROM notes
”部分。我知道这些笔记在那里是因为如果我手工搜索它们就可以看到它们。
一些额外的潜在要点:
非常感谢您给我的任何帮助!
答案 0 :(得分:0)
结果证明思维斯芬克斯有问题。
TS设置为每小时运行其重建索引服务(rake ts:reindex)作为拥有该项目的用户。当我调试问题时,我以root身份运行它,它将所有索引文件的所有权更改为root。当用户的重建索引作业在之后运行时,它返回
权限被拒绝,不会索引。尝试 - 旋转选项。
错误或
资源暂时不可用,不会索引。尝试 - 旋转选项。
错误。
我最终从头开始重新创建索引文件作为非root用户,现在又重新开始了。