Sqlite ActiveRecord 3.1&;Debian上的SQL异常

Sqlite ActiveRecord 3.1&;Debian上的SQL异常,sqlite,ruby-on-rails-3.1,Sqlite,Ruby On Rails 3.1,在Lion上开发,使用sqlite3.7.5打包,我没有任何问题 我推到了生产环境(Debian Lenny w/sqlite3.5.9),得到了以下SQL异常 SQLite3::SQLException:没有这样的列:taggings.tag_id:[在此处查询] 我通过从rails数据库控制台手动运行查询来确认这一点,sqlite 3.7.x确实会返回结果,但3.5.x会抛出一个错误 我确信查询是正确的,那么ActiveRecord 3.1是否与sqlite 3.5不兼容?我没有看到更新

在Lion上开发,使用sqlite3.7.5打包,我没有任何问题

我推到了生产环境(Debian Lenny w/sqlite3.5.9),得到了以下SQL异常


SQLite3::SQLException:没有这样的列:taggings.tag_id:[在此处查询]

我通过从rails数据库控制台手动运行查询来确认这一点,sqlite 3.7.x确实会返回结果,但3.5.x会抛出一个错误

我确信查询是正确的,那么ActiveRecord 3.1是否与sqlite 3.5不兼容?我没有看到更新的版本

有什么想法吗

更新 失败的查询是

SELECT tags.*, taggings.tags_count AS count
FROM "tags" JOIN (
  SELECT taggings.tag_id, COUNT(taggings.tag_id) AS tags_count
  FROM "taggings" INNER JOIN work ON work.id = taggings.taggable_id
  WHERE (taggings.taggable_type = 'Work' AND taggings.context = 'tags')
  AND (taggings.taggable_id IN(SELECT work.id FROM "work" )
)
GROUP BY taggings.tag_id HAVING COUNT(taggings.tag_id) > 0) AS taggings ON taggings.tag_id = tags.id
我的模式是

create_table "taggings", :force => true do |t|
    t.integer  "tag_id"
    t.integer  "taggable_id"
    t.string   "taggable_type"
    t.integer  "tagger_id"
    t.string   "tagger_type"
    t.string   "context"
    t.datetime "created_at"
  end

  add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
  add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"

  create_table "tags", :force => true do |t|
    t.string "name"
  end
修理 我从未发现这个问题,但我的假设是activerecord 3.1与sqlite 3.5.9不兼容


尽管lenny的最后一个dpkg版本是3.5.9,但我从源代码构建了3.7.7,它现在正在正确处理查询。

您是否在生产环境中运行迁移?是的,数据库已全部迁移并种子化。我可以在上面运行其他更简单的查询,没问题。我将在描述中添加失败的整个查询,以显示与sqlite3.5不兼容的内容。