2010-12-01 25 views
1

我有一个在MySQL而不是在Postgres的PGError:ERROR:达到或接近语法错误E'String”

: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] 

工作的Ruby on Rails的条件生成错误:

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是类型:字符串,而a,b和c都是:小数。

在对Postgresql做了一些研究之后,似乎E'字符串被转义字符串 - 这并不能帮助我,因为我似乎无法纠正它。我不经常使用Postgresql,所以如果事情很明显,我会提前道歉。

我正在使用heroku进行托管,因此我无法更改任何Postgresql设置。无论如何,我宁愿真正理解问题所在以及如何解决问题。

干杯, 斯图

回答

3

尝试改变

ddd is ? 

ddd = ? 
+0

就是这样 - 谈论感觉就像一个白痴 - 欢呼声。 – Stu 2010-12-01 18:25:07

2

相信IS运营商不能用于比较文本值。你有什么打算呢?

+0

我使用的是'is',因为它可以保持可读性并且可以在MySQL中工作,但是我可以轻松地使用=操作符。我会尝试 - 为小费喝彩。 – Stu 2010-12-01 18:17:19

0

你有没有试过,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] 
相关问题