Ошибка конвертации из MySQL в Postgres и получение столбца "Товар" не существует "
Я использую act_as_taggable_on в рельсах, и я пытаюсь получить список всех продуктов, которые еще должны быть помечены. В MySQL работал следующий запрос:
def self.untagged
available.find(:all,
:joins => %{LEFT JOIN taggings ON products.id = taggings.taggable_id AND taggings.taggable_type = "Product"},
:conditions => "taggings.id IS NULL AND for_sale IS true",
:order => "products.updated_at DESC"
)
Однако в Postgres я получаю сообщение об ошибке, что столбец "Продукт" не существует.
Сгенерированный SQL выглядит так:
SELECT count(*) AS count_all FROM "products" LEFT JOIN taggings ON products.id = taggings.taggable_id AND taggings.taggable_type = "Product" WHERE (taggings.id IS NULL AND for_sale IS true) AND (products.date_expires > '2011-09-12') )
Любые предложения о том, как заставить это работать? Я бы предпочел использовать активный способ записи, чтобы он все еще работал в MySQL. Но это то, что я хотел бы пожертвовать.
Заранее спасибо..
1 ответ
Решение
Вы должны заключать строковые литералы в одинарные кавычки в PostgreSQL, а не в двойные, двойные - для идентификаторов (таких как имена таблиц и столбцов). MySQL имеет тенденцию играть быстро и свободно со стандартами, PostgreSQL, как правило, намного строже.