2013-02-11 44 views
0

嘗試在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測試,它工作得很好......

+2

*這真讓人難以置信,我認爲MySQL的... [行不通] * SQL Server和/或Oracle開發誰希望自己的RDBMS支持SQL,我明白了。 – 2013-02-11 10:56:26

+0

您是否正在運行delayed_job的最新版本? – 2013-02-11 17:05:05

+0

@FrederickCheung它似乎是這樣的(v3.0.5在Gemfile.lock中),我更新了問題 – Alex 2013-02-11 21:20:42

回答