1

pg-promise 不理解 UTF 密码?.. 我无法使用它们。在 linux 和 osx 上尝试过,postgres 9.3、9.5 - 似乎并不特定于版本。看了看代码。pg-promise 使用pg,它使用基于 back pg构建的pg-connect-string。找不到问题的根源。请帮忙。

重现代码:

MacBook-Air:js vao$ cat 2.js
var pgp = require("pg-promise")();
var cs = 'postgresql://utf:утф@127.0.0.1:5433/a';
var db = pgp(cs);
db.connect()
    .then(function (obj) {
        obj.done(); // success, release the connection;
    })
    .catch(function (error) {
        console.log("ERROR:", error.message || error);
    });
console.log(cs);

返回:

MacBook-Air:js vao$ node 2.js
postgresql://utf:утф@127.0.0.1:5433/a
ERROR: password authentication failed for user "utf"

使用相同的连接字符串psql

MacBook-Air:js vao$ psql 'postgresql://utf:утф@127.0.0.1:5433/a'
psql (9.5.3)
Type "help" for help.

a=> \q

使用相同的连接字符串故意尝试错误的密码:

MacBook-Air:js vao$ psql 'postgresql://utf:утфWrongPassword@127.0.0.1:5433/a'
psql: FATAL:  password authentication failed for user "utf"
MacBook-Air:js vao$
4

1 回答 1

0

作为pg-promise的作者,我至少想在这里提供一些关于在哪里查看的指导,而不是确切的答案,因为我自己从未处理过 UTF 密码。

pg-promise使用node-postgres,而后者又使用pg-connection-string来解析连接。如果有问题,那么很可能是在pg-connection-string中。

我建议尝试依赖%. 也许它会起作用。可能不行,我没试过。此外,从未回答过以下问题:Node.js postgres UTF connect string,这也不能让人放心。

抱歉,我目前无法提供更多帮助。

于 2016-12-04T23:05:29.233 回答