PGError: ERROR: синтаксическая ошибка в или около E'String ' - PullRequest
1 голос
/ 01 декабря 2010

У меня есть условие Ruby on Rails, которое работает в MySQL, но не в PostGres

:conditions => ["A between ? and ? and B between ? and ? and C between ? and ? and ddd is ?",@amin,@amax,@bmin,@bmax,@cmin,@cmax,params[:input].to_s]

Генерирует ошибку:

ActiveRecord::StatementInvalid (PGError: ERROR:  syntax error at or near "E'word'"
LINE 1: ...c between -100 and 100 and ddd is E'word')

Я знаю, что это работает без последнего сравнения. Например.

    :conditions => ["A between ? and ? and B between ? and ? and C between ? and ?",@amin,@amax,@bmin,@bmax,@cmin,@cmax]

ddd имеет тип: string, тогда как a, b и c все: десятичные.

После некоторого исследования Postgresql кажется, что строки E '- это экранированные строки - это мне не помогает, так как я не могу исправить это. Я не часто работаю с Postgresql, поэтому заранее прошу прощения, если это что-то очевидно.

Я использую heroku для хостинга, поэтому не могу изменить какие-либо настройки Postgresql. Во всяком случае, я бы предпочел по-настоящему понять, в чем проблема и как ее исправить.

Cheers, Stu

Ответы [ 3 ]

3 голосов
/ 01 декабря 2010

Попробуйте изменить

ddd is ?

в

ddd = ?
2 голосов
/ 01 декабря 2010

Я считаю, что оператор IS нельзя использовать для сравнения текстовых значений.Каково было ваше намерение?

0 голосов
/ 01 декабря 2010

вы пробовали и DDD =?в отличие от?

 :conditions => ["A between ? and ? and B between ? and ? and C between ? and ? and ddd = ?",@amin,@amax,@bmin,@bmax,@cmin,@cmax,params[:input].to_s]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...