0

Rails 3アプリをMySQL環境にデプロイしようとしていますが、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では機能しないことは私には気が遠くなるようなことです。宝石の人気を考えると、MySQLで壊れた可能性ではなく、どこかで間違いを犯していることを望んでいます。

ありがとう。

-

私はPostgres9.1でテストしましたが、正常に動作します...

4

1 に答える 1

1

私はこれと同じ問題を抱えていて、これを見つけました。今のところ、古いバージョンを使用する必要があるようです。彼らは昨日、アクティブレコードの宝石にいくつかの更新を行いました。

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

于 2013-02-11T21:34:01.183 に答える