Ruby on Rails查询到MySQL并不总是返回新添加的信息

时间:2013-04-12 20:33:56

标签: mysql ruby-on-rails ruby redhat

我使用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”部分。我知道这些笔记在那里是因为如果我手工搜索它们就可以看到它们。

一些额外的潜在要点:

  • 这个系统在三年多时间内没有重新启动,httpd和sqld之类的东西没有设置为重启时自动启动,所以我不确定是否还有其他东西需要重启。
  • 我没有Ruby on Rails的背景知识。我不知道Thinking Sphinx是什么,但我知道在运行命令“rake -f~user / project / Rakefile ts:start RAILS_ENV = production”之前我遇到了HTTP 500错误。
  • 系统刚刚从一个虚拟机场迁移到另一个虚拟机场(换句话说,V-to-V),但我已经检查了这可能影响RoR安装的所有方式,并且已经到了结论是它不会影响任何文件或功能。

非常感谢您给我的任何帮助!

1 个答案:

答案 0 :(得分:0)

结果证明思维斯芬克斯有问题。

TS设置为每小时运行其重建索引服务(rake ts:reindex)作为拥有该项目的用户。当我调试问题时,我以root身份运行它,它将所有索引文件的所有权更改为root。当用户的重建索引作业在之后运行时,它返回

  

权限被拒绝,不会索引。尝试 - 旋转选项。

错误或

  

资源暂时不可用,不会索引。尝试 - 旋转选项。

错误。

我最终从头开始重新创建索引文件作为非root用户,现在又重新开始了。