Разработка на Lion, в комплекте с sqlite3 3.7.5, у меня нет проблем.
Я запущен в производство (Debian Lenny w / sqlite3 3.5.9), и я получаю следующие исключения SQL
SQLite3::SQLException: no such column: taggings.tag_id: [query here]
я подтвердил это, выполнив запрос вручную из rails dbconsole, и, действительно, 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
и моя схемаis
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
FIX
ну, я никогда не обнаруживал проблему, но я предполагаю, что activerecord 3.1 не совместим с sqlite 3.5.9.
, хотя последний dpkgверсия для lenny - 3.5.9, я собрал 3.7.7 из исходного кода и теперь он правильно обрабатывает запросы.