【问题标题】:Unknown Alias error when running delayed_job运行延迟作业时出现未知别名错误
【发布时间】:2013-09-23 20:54:36
【问题描述】:

我在带有 MySQL 数据库的 Rails 3.2.14 上运行带延迟作业活动记录 0.4.4 的延迟作业 3.0.5 和守护进程 1.1.9。当我执行 script/delayed_job start 命令时,它似乎正常启动但没有创建 pid 文件。当我检查delayed_job 日志时,没有错误只是进程正在启动的信息消息。

但是,当我查看 rails 开发日志时,我看到 SQL 更新命令后返回一个未知别名。这是我日志中的一个片段,显示了我在哪里开始延迟_job 两次。每次它得到一个新的 pid 并且每次它都给出相同的 Unknown 别名。

如果能帮助我解决这个问题,我将不胜感激。

bcrossland-mb:GameKultur bcrossland$ tail log/development.log 
  Delayed::Backend::ActiveRecord::Job Load (17.9ms)  SELECT `delayed_jobs`.* FROM `delayed_jobs` WHERE `delayed_jobs`.`locked_at` = '2013-09-18 21:14:09' AND `delayed_jobs`.`locked_by` = 'delayed_job host:bcrossland-mb.local pid:13163' AND `delayed_jobs`.`failed_at` IS NULL LIMIT 1
  Preference Load (0.5ms)  SELECT `preferences`.* FROM `preferences` LIMIT 1
  SQL (8.0ms)  UPDATE `delayed_jobs` SET `locked_by` = NULL, `locked_at` = NULL WHERE `delayed_jobs`.`locked_by` = 'delayed_job host:bcrossland-mb.local pid:13163'
Unknown alias: 70352758094800
Connecting to database specified by database.yml
  SQL (105.9ms)  UPDATE `delayed_jobs` SET `locked_at` = '2013-09-18 21:36:58', `locked_by` = 'delayed_job host:bcrossland-mb.local pid:13564' WHERE ((run_at <= '2013-09-18 21:36:58' AND (locked_at IS NULL OR locked_at < '2013-09-18 17:36:58') OR locked_by = 'delayed_job host:bcrossland-mb.local pid:13564') AND failed_at IS NULL) ORDER BY priority ASC, run_at ASC LIMIT 1
  Delayed::Backend::ActiveRecord::Job Load (1.1ms)  SELECT `delayed_jobs`.* FROM `delayed_jobs` WHERE `delayed_jobs`.`locked_at` = '2013-09-18 21:36:58' AND `delayed_jobs`.`locked_by` = 'delayed_job host:bcrossland-mb.local pid:13564' LIMIT 1
  Preference Load (0.6ms)  SELECT `preferences`.* FROM `preferences` LIMIT 1
  SQL (1.8ms)  UPDATE `delayed_jobs` SET `locked_by` = NULL, `locked_at` = NULL WHERE `delayed_jobs`.`locked_by` = 'delayed_job host:bcrossland-mb.local pid:13564'
Unknown alias: 70352758094800

【问题讨论】:

    标签: mysql ruby-on-rails-3.2 delayed-job


    【解决方案1】:

    我找到了。在delayed_jobs 表中这是一项糟糕的工作。我有一个模块,每个模型都包含一个模块,用于在运行模型时发送错误邮件。它已经工作了多年,但是在一个新模型上,正在发送的错误消息是在导致延迟作业崩溃的 ruby​​ 调用之前注入一个字符串。

    - &70352758094800 !ruby/string
    

    从示例中可以看出,&70352758094800 被注入到延迟作业将要执行的 ruby​​ 调用之前。这些数字与未知别名错误中列出的数字相匹配。由于字符串从未改变,我决定在表中搜索它并发现了这个糟糕的工作。一旦我从表中删除作业,delayed_jobs 开始时没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 2011-11-04
      • 2012-02-16
      • 2012-10-28
      相关资源
      最近更新 更多