【问题标题】:delayed_job on MySQL: 'This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'在 MySQL 上的延迟作业:'此版本的 MySQL 尚不支持'LIMIT & IN/ALL/ANY/SOME 子查询'
【发布时间】:2013-01-26 11:17:50
【问题描述】:

尝试在 MySQL 环境中部署 Rails 3 应用,但遇到了 delayed_job (v3.0.5) gem 的问题。

db:migrate 似乎没问题:

==  CreateDelayedJobs: migrating ==============================================
-- create_table(:delayed_jobs, {:force=>true})
   -> 0.0055s
-- add_index(:delayed_jobs, [:priority, :run_at], {:name=>"delayed_jobs_priority"})
   -> 0.0040s
==  CreateDelayedJobs: migrated (0.0096s) =====================================

但尝试script/delayed_job run(很长的查询警告):

delayed_job: process with pid 10713 started.
Mysql2::Error: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery': UPDATE `delayed_jobs` SET `locked_at` = '2013-02-11 10:43:13', `locked_by` = 'delayed_job                       host:dev pid:10713' WHERE `delayed_jobs`.`id` IN (SELECT  id FROM `delayed_jobs`  WHERE ((run_at <= '2013-02-11 10:43:13' AND (locked_at IS NULL OR locked_at < '2013-02-11 06:4                      3:13') OR locked_by = 'delayed_job host:dev pid:10713') AND failed_at IS NULL) ORDER BY priority ASC, run_at ASC LIMIT 1 FOR UPDATE) AND ((run_at <= '2013-02-11 10:43:13' AND (l                      ocked_at IS NULL OR locked_at < '2013-02-11 06:43:13') OR locked_by = 'delayed_job host:dev pid:10713') AND failed_at IS NULL)

我可以确认桌子都在那里并且是空的。

我尝试过:MySQL 5.1 和 5.5 以及 Percona 和 MariaDB。我在 Linux 和 Windows 机器上都试过了。

令我难以置信的是,这在 sqlite3 上运行良好,但在 MySQL 上运行良好。鉴于 gem 的受欢迎程度,我希望我在某个地方犯了错误,而不是它在 MySQL 上损坏的可能性。

谢谢。

--

我已经在 Postgres 9.1 中测试过,它运行良好...

【问题讨论】:

  • 这让我难以置信...... MySQL [不起作用] SQL Server 和/或 Oracle 开发人员希望他们的 RDBMS 支持 SQL,我明白了。
  • 您运行的是最新版本的delayed_job 吗?
  • @FrederickCheung 看起来是这样(Gemfile.lock 中的 v3.0.5),我更新了问题

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


【解决方案1】:

我遇到了同样的问题并发现了这个。看来您现在需要使用旧版本。他们昨天对活动记录宝石进行了一些更新。

https://github.com/collectiveidea/delayed_job_active_record/issues/32

【讨论】:

  • 谢谢,签入问题,但似乎我找错了宝石。很高兴看到它很快就会被整理出来。
猜你喜欢
  • 2013-07-27
  • 1970-01-01
  • 2015-03-07
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多