導軌2.3.4,SQLITE3SQLITE3 ActiveRecord的:爲了=> 「時間DESC」 不排序
我想這
Production.find(:全部:條件=> [ 「時間>?」, start_time.utc]:爲了=> 「時間DESC」, :極限=> 100)
的條件作品完美,但我具有與所述問題:order => time DESC。
偶然地,我發現它在運行PostgreSQL的Heroku(使用heroku控制檯進行測試)工作。但是,在本地,使用sqlite3,新條目將排序後的舊的,無論我設置時間到。像這樣(輸出已手動剝離):第二項是新的:
產品ID:2053939460,時間: 「2010-04-24 23時00分04秒」,created_at:「2010-04- 24 23點00分05" 秒
產品ID:2053939532,時間: 「2010-04-25 10:00:00」,created_at: 「2010-04-27 5時58分30秒」
生產編號:2053939461,時間:「2010-04-25 00:00:04」,created_at:「2010-04-25 00:00:04」
生產編號:2053939463,時間:「2010-04-25 1時00分04" 秒, created_at: 「2010-04-25 1時00分04秒」
好像它排序主鍵,ID,不時間。請注意,查詢在heroku上正常工作,返回正確排序的列表!我喜歡sqlite,它是如此吻,我希望你能幫助我...
有什麼建議嗎?
UPDATE /解決: 時間是一個保留的sqlite3關鍵字(日期,除其他外,是太)。這就是爲什麼:order => 'time DESC'
在PostgreSQL(non-reserved keyword)中工作的原因,但不在sqlite3中。解決方案是避免將sqlite3關鍵字作爲列名稱,如果您打算對其進行排序。 重命名解決了這個問題。
我的標準測試軌道模式的updated_at和created_at,它完美的作品。
我仍然喜歡sqlite3的開發,它是如此簡單和順利的工作,複製數據庫併發送給你的合作伙伴。感謝@newtover!
啊,我正在使用保留字!愚蠢的我..它似乎不工作與'或',但我測試你是對的,使用updated_at而不是時間。我想我必須重新命名列? – oma 2010-04-27 13:12:01
太難過了,我不能給你投票,答案很快,現貨!你應該得到額外的積分,票數,repu或其他什麼,以回答你認識不了的人:)。所以,謝謝! – oma 2010-04-27 13:19:47
@ Ole Morten阿蒙森:好像你的問題是已知的。嘗試按'strftime('%s',已更新)命令DESC' – newtover 2010-04-27 14:42:42