嘗試在MySQL環境中部署Rails 3應用程序,但運行時遇到delayed_job
(v3.0.5)寶石。MySQL上的delayed_job:'此版本的MySQL尚不支持'LIMIT&IN/ALL/ANY/SOME子查詢'
的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的可能性。
謝謝。
-
我在Postgres的9.1測試,它工作得很好......
*這真讓人難以置信,我認爲MySQL的... [行不通] * SQL Server和/或Oracle開發誰希望自己的RDBMS支持SQL,我明白了。 – 2013-02-11 10:56:26
您是否正在運行delayed_job的最新版本? – 2013-02-11 17:05:05
@FrederickCheung它似乎是這樣的(v3.0.5在Gemfile.lock中),我更新了問題 – Alex 2013-02-11 21:20:42