FATAL: no PostgreSQL user name specified in startup packet
尝试通过以下操作连接到kubernetes集群中的postgreSQL实例时的日志:
const { POSTGRES_DATABASE, POSTGRES_USERNAME, POSTGRES_PASSWORD } = require('../config/config');
const Sequelize = require('sequelize');
const conn = new Sequelize(POSTGRES_DATABASE, {
username: POSTGRES_USERNAME,
password: POSTGRES_PASSWORD
});
config / config.js
const config = {
POSTGRES_DATABASE: 'postgres://postgres/postgresdb',
POSTGRES_USERNAME: 'postgresadmin',
POSTGRES_PASSWORD: 'admin123',
SERVER_PORT: '5000'
}
module.exports = config;
我在nodeJS中使用SequelizeJS。 http://docs.sequelizejs.com/
由于在postgreSQL日志中看到了尝试,因此请求似乎可以正常连接。但是出了些问题,我想知道postgres或节点服务中的权限是否有问题。
赞赏一些帮助或想法
答案 0 :(得分:3)
根据您链接的Sequelize文档,用于创建新连接的参数是db,用户名和密码。您的代码执行db,然后执行一个具有用户名和密码键的对象。该对象不正确,导致找不到用户名或密码。尝试以下方法:
const { POSTGRES_DATABASE, POSTGRES_USERNAME, POSTGRES_PASSWORD } = require('../config/config');
const Sequelize = require('sequelize');
const conn = new Sequelize(POSTGRES_DATABASE, POSTGRES_USERNAME, POSTGRES_PASSWORD);
Sequelize 确实允许最后一个参数是一个可选的options对象,但是用户名和密码不应在其中。
文档的此页面令我感到困惑。
http://docs.sequelizejs.com/manual/installation/usage.html
我相信它的意思是您要么需要定义对象中的所有内容,要么将数据库,用户名和密码作为单独的参数,但是我看不到它在参数和用户名/密码中支持数据库物体。
似乎这也应该工作:
const conn = new Sequelize({
database: POSTGRES_DATABASE,
username: POSTGRES_USERNAME,
password: POSTGRES_PASSWORD
});