【发布时间】:2016-12-06 11:02:48
【问题描述】:
我正在将现有项目从 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 样式参数的实用程序?
请注意,某种基于正则表达式的破解是不可接受的,因为问号可以在引号内,或者反斜杠可以转义到任何深度。
【问题讨论】:
-
使用 ?查询中的不是 MySQL,而是应用层,例如爪哇。这很可能不需要更改。你能在代码的上下文中向我们展示这个查询吗?
-
您使用的是什么版本的 Postgres?因为文档提到使用
?(postgresql.org/docs/9.1/static/ecpg-commands.html) 以及这个随机的 SO 问题 (stackoverflow.com/questions/10659737/…) -
什么是node-postgres,为什么它不在标签中,因为它似乎是您问题的核心?
-
@joop 看起来这是 postgres 的 node.js 接口。这使我的评论无关紧要。
标签: mysql node.js node-postgres