将mysql查询转换为postgresql后出错

时间:2014-02-07 17:52:40

标签: mysql ruby-on-rails postgresql

  

$ Customer.send(“今天”)。计数

 SELECT COUNT(*) FROM "customers" WHERE (`customers`.created_at >
 '2014-02-07 05:00:00.000000')


 ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR:  syntax error
 at or near "."
     LINE 1: ...LECT COUNT(*) FROM "customers"  WHERE (`customers`.created_at > '2014-02-07 05:00:00.000000')

当我将我的MYSQL数据库转换为PG时,我得到此错误如何解决此问题。如果我在MySQL中确定了这个查询,那么它的工作正常,但在PG中会出错。

请帮帮我......!

提前致谢

1 个答案:

答案 0 :(得分:2)

引用的反引号是MySQL-ism,标准SQL和PostgreSQL使用双引号来引用标识符。你有的地方:

where('`customers`.created_at > ?', something)

但是PostgreSQL希望看到:

where('"customers".created_at > ?', something)

但是,由于表名是小写而不是保留字,因此您可以删除引号并获取更易于阅读的内容,并且可以在两个数据库中使用:

where('customers.created_at > ?', something)

据推测,此更改需要在send范围内进行。