gpt4 book ai didi

node.js - Postgres pg_notify/listen 仅在 channel 名称为小写时有效

转载 作者:行者123 更新时间:2023-11-29 12:29:43 27 4
gpt4 key购买 nike

我读过 https://www.postgresql.org/docs/9.6/static/sql-notify.html channel 名称只是描述为“标识符”。

我正在使用 NodeJS 和 pg https://www.npmjs.com/package/pg访问 postgres。

如果我在两者中都使用小写单词,例如pg_notify('foo', ...LISTEN foo 它有效。我已经测试了所有组合:

pg_notify  LISTEN  outcome
lower lower works
lower upper works
upper lower fails
upper upper fails

这是一个错误,还是作为“标识符”的逻辑结果? (如果是这样,这应该记录在 pg_notify 页面上吗?)

最佳答案

混淆来自引号。单引号用于字符串,双引号用于标识符,如果您不使用大小写混合/从数字开始/或其他技巧,则可以跳过。

当您运行 pg_notify 函数时,您将 'foo' 作为字符串参数传递,因此使用单引号,当您运行 NOTIFY "Virtual" 时,您使用 Virtual 作为 channel 名称 - 一个标识符,因此您需要在此处使用 "

所以当你自己回答时,改变

client.query("LISTEN 'Virtual'"); 

client.query('LISTEN "Virtual"');

解决问题

https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

关于node.js - Postgres pg_notify/listen 仅在 channel 名称为小写时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44198718/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com