连接到 postgres 数据库失败
Posted
技术标签:
【中文标题】连接到 postgres 数据库失败【英文标题】:Connections to postgres database failure 【发布时间】:2021-07-14 12:18:03 【问题描述】:我正在尝试使用 node-express-postgres 实现身份验证服务。
我将池配置为:
const Pool = require('pg').Pool;
const pool = new Pool(
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
host: process.env.DB_HOST,
port: 5432
);
module.exports = pool;
我正在尝试执行以下调用作为连接的简单测试:
const express = require('express');
const router = express.Router();
const pool = require('../db');
const bcrypt = require('bcryptjs');
router.post('/login', async (req, res) =>
try
let temp = await pool.query("SELECT * FROM records");
console.log(temp)
catch (error)
console.log(error.message);
);
当我向此端点发送发布请求时,我的应用程序崩溃并出现以下错误:
Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string
我检查了我所有的环境变量,它们是正确的。 知道为什么它无法对 postgres 数据库进行任何操作吗?
【问题讨论】:
什么给了console.log( typeof process.env.DB_PASSWORD )
?
它返回一个字符串
我建议在你的 db.js 文件中为你的 db 实现 connect 方法,这样,当它被包含在另一个文件中时,我会自动运行 connect 操作然后做其他事情
我看到 pool.connect() 出现同样的错误
@nimrodfeldman 你能解决这个错误吗?
【参考方案1】:
检查你的IDE文件夹中的路径,当我检查时,它在下面的一个路径中,所以我将它移动到正确的文件夹中并繁荣,一切正常。
【讨论】:
【参考方案2】:通过更新 npm 脚本修复它。
cross-env NODE_ENV=development nest start
安装了“cross-env”来设置 NODE_ENV。 如果我们的代码找不到 .development.env 文件或者找不到密码,就会抛出这个错误。
【讨论】:
【参考方案3】:您可能应该在配置中指明您的 .env 文件位置
require('dotenv').config( path: '../.env' );
dotenv configurations
【讨论】:
【参考方案4】:为我配置“dotenv”解决了错误
require('dotenv').config();
【讨论】:
【参考方案5】:检查您的 postgres 密码是否正确。我在使用 mac 时遇到了类似的问题,默认情况下 posgreSQL 用户是“posgres”,密码是“root”
在我的情况下,我有类似的东西
...
USER: "postgres",
PASSWORD: "",
...
产生了错误
【讨论】:
【参考方案6】:看来,该节点没有读取 .env 文件。 你可以检查一下
console.log(process.env.DB_PASSWORD);
例如,可以使用包 'dotenv' 来修复它。
npm i --save dotenv
然后在 index.js 的第一行
require('dotenv').config();
【讨论】:
以上是关于连接到 postgres 数据库失败的主要内容,如果未能解决你的问题,请参考以下文章
org.postgresql.util.PSQLException:致命:从 Spring Boot 连接到 postgres 时用户“postgres”的密码验证失败
使用 Databricks 连接到 AWS Postgres