Я пытаюсь переместить простое приложение Sinatra в Heroku. Миграция кода приложения Ruby и существующей базы данных MySQL с использованием Taps прошла гладко, но я получаю следующую ошибку Postgres:
PostgresError - ОШИБКА: оператор не существует: text = integer
ЛИНИЯ 1: ... d_at "," post_id "ОТ" комментирует "ГДЕ (" post_id "IN (4, 17, ...
^
СОВЕТ: ни один оператор не соответствует заданному имени и типу (аргументам) аргумента. Возможно, вам придется добавить явные приведения типов.
Очевидно, что проблема связана с несовпадением типов в запросе, но это выдается из шаблона Haml в DataMapper ORM на очень высоком уровне абстракции, поэтому я не уверен, как бы я поступил об управлении этим ...
В частности, это похоже на вызов p.comments
из моего шаблона Haml, где p
представляет данный пост.
Модели Datamapper связаны следующим образом:
class Post
property :id, Serial
...
has n, :comments
end
class Comment
property :id, Serial
...
belongs_to :post
end
Это хорошо работает в моей локальной и текущей размещенной среде, использующей MySQL, но Postgres явно более строг.
Там должны быть сотни приложений Datamapper & Haml, работающих на БД Postgres, и эта модель отношений супер-традиционна, так что, надеюсь, кто-то видел (и решил, как это исправить). Спасибо!
ОБНОВЛЕНИЕ: См. Heroku: Ошибка оператора типа Postgres после миграции БД из MySQL для разрешения.