13 sql postgresql go
我在MySQL和PostgreSQL中都使用了下一个SQL语句,但它在PostgreSQL中失败了
db.Query(`SELECT COUNT(*) as N FROM email WHERE address = ?`, email)
Run Code Online (Sandbox Code Playgroud)
有这个错误:
pq: F:"scan.l" M:"syntax error at end of input" S:"ERROR" C:"42601" P:"50" R:"scanner_yyerror" L:"993"
Run Code Online (Sandbox Code Playgroud)
有什么问题?PostgreSQL中的错误消息非常神秘.
int*_*tgr 38
您还没有提供有关语言/环境的任何详细信息,但无论如何我都会尝试一下狂野的猜测:
MySQL的准备语句本身使用?
作为参数占位符,而PostgreSQL使用$1
,$2
等尝试更换?
用$1
,看看它的工作原理:
WHERE address = $1
Run Code Online (Sandbox Code Playgroud)
PostgreSQL中的错误消息非常神秘.
一般来说,我发现Postgres错误消息比竞争产品(ahem,MySQL,尤其是 Oracle)更好,但在这种情况下,你已经设法将解析器与理智混淆.:)
小智 14
在 golang 中我们可以使用查询
你正在使用Go吗?
尝试:
db.Query(`SELECT COUNT(*) as N FROM email WHERE address = $1`, email)
Run Code Online (Sandbox Code Playgroud)
就我而言,这是由于使用了 -- 行注释,其中负责与数据库交互的程序将我的查询的多行全部读取为一大行。这意味着行注释破坏了查询的其余部分。修复方法是使用 /* 块注释 */ 代替。