我正在将现有项目从MySQL转换为Postgres。在代码中有相当多的原始SQL字面值使用?
作为占位符,例如
SELECT
id
FROM
users
WHERE
name = ?
但我得到这个错误:
DB query error: error: operator does not exist: character varying = ?
我不想将我的所有现有的SQL从?
到的Postgres风格的运营商如$1
。
是否有某种方式让node-postgres接受问号,或者可以转换为postgres样式参数的实用程序?
请注意,某些基于正则表达式的hack是不可接受的,因为问号可以在引号内,或者反斜线转义为任何深度。
使用?在查询中不是MySQL,而是应用层,例如Java的。这不应该最有可能改变。你能在代码的上下文中向我们展示这个查询吗? –
你使用的是什么版本的Postgres?因为文档中提到使用'?'(https://www.postgresql.org/docs/9.1/static/ecpg-commands.html)以及这个随机的SO问题(http://stackoverflow.com/questions/10659737/how-can-i-use-a-query-with-placeholder-inside-quotes-perl-postgresql) –
什么是node-postgres,为什么它不在标签中,因为它似乎是你的核心题? – joop