node.js - 尝试从节点应用程序连接时出现 PostgreSQL 错误
问题描述
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.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 或节点服务中的权限是否有问题。
感谢一些帮助或想法
解决方案
根据您链接的 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确实允许一个可选的选项对象作为最后一个参数,但用户名和密码不应该在其中。
文档的这一页让我感到困惑。
http://docs.sequelizejs.com/manual/installation/usage.html
我相信它所说的是您要么需要定义对象中的所有内容,要么将数据库、用户名和密码作为单独的参数进行,但我没有看到它支持参数中的数据库和对象中的用户名/密码。
似乎这也应该起作用:
const conn = new Sequelize({
database: POSTGRES_DATABASE,
username: POSTGRES_USERNAME,
password: POSTGRES_PASSWORD
});
推荐阅读
- java - Spring JMS 动态配置 JmsListeners
- java - 无法解析证书:java.io.IOException:vernemq 中的输入为空
- swift - SceneKit 自适应细分
- excel - 我需要 vlookup 公式从 3 个 excel 表中提取数据
- python-3.x - 如何处理 python guizero/tkinter 中的无字母键盘输入错误?
- c - 内核(以及一般的操作系统)是如何用 C 语言编写的?
- vim - 无法打开 NERDTree 中文件名中不包含“+”或“~”的任何文件
- github-desktop - GitHub 桌面 Husky 预提交钩子没有
- python-3.x - 获取 sudo apt-get update 的完整输出
- video-processing - Openimaj 支持 gpgpu 吗?