Экземпляру Knex не удается подключиться к PostgreSQL DB: ошибка необработанного отклонения: роль «19016» не существует

#node.js #knex.js #postgresql-11

#node.js #knex.js #postgresql-11

Вопрос:

Я могу установить соединение между «knex-pracice» (моей базой данных postgreql) с KNEX, но когда я пытаюсь выполнить запрос с моим экземпляром knex, я получаю сообщение об ошибке: «Ошибка необработанного соединения: роль «19016» не существует». 19016 — это имя моей учетной записи системного пользователя WINDOWS 10. и я пытаюсь понять, почему он использует «19016» вместо указанного пользователя «dunder-mifflin». Я новичок как в postgres, так и в knex, поэтому простите меня, если мое описание немного сбивает с толку или если кажется, что я полностью не понимаю свою проблему.

Кроме того, я попытался «взломать» свою проблему, создав пользователя с именем «19016» в базе данных и попытался подключиться таким образом, но это просто выдает мне другую ошибку: «Ошибка необработанного подключения: база данных «19016» не существует». Полностью запутавшись в том, как заставить его подключиться к postgresql с именем пользователя «dunder-mifflin», я, однако, могу подключиться к БД и запросить ее через мой powershell без проблем….

.env

 NODE_ENV=development
PORT=8000 
DB_URL="postgresql://dunder-mifflin@localhost/knex-practice" 

  

practice.js

 //adds .env file for environment variable access
require('dotenv').config()
const knex = require('knex')

// database connection --> this connction comes from the .env file
const knexInstance = knex({
    client: 'pg',
    //   database connection established --> environment variable comes from .env
    // file
    connection: process.env.DB_URL 
})

console.log('connection successful');

// SQL query
knexInstance
    .from('amazong_products')
    .select('*')
    .then(result => {
        console.log(result)
    });



  

package.json

 {
    "name": "knex-practice",
    "version": "1.0.0",
    "description": "knex-practice",
    "main": "index.js",
    "scripts": {
        "test": "mocha --require test/setup.js",
        "dev": "nodemon src/server.js",
        "start": "node src/practice.js",
        "predeploy": "npm audit",
        "deploy": "git push heroku master"
    },
    "repository": {
        "type": "git",
        "url": "git https://github.com/quonn-bernard/Express-Boilerplate.git"
    },
    "keywords": [],
    "author": "",
    "license": "ISC",
    "bugs": {
        "url": "https://github.com/quonn-bernard/Express-Boilerplate/issues"
    },
    "homepage": "https://github.com/quonn-bernard/Express-Boilerplate#readme",
    "dependencies": {
        "cors": "^2.8.5",
        "dotenv": "^7.0.0",
        "express": "^4.16.4",
        "helmet": "^3.16.0",
        "knex": "^0.16.5",
        "morgan": "^1.9.1",
        "pg": "^7.9.0"
    },
    "devDependencies": {
        "chai": "^4.2.0",
        "mocha": "^6.0.2",
        "nodemon": "^1.18.10",
        "supertest": "^4.0.2"
    }
}
  

Ответ №1:

Вам необходимо изменить строку подключения на:

 postgres://user:pass@localhost:5432/dbname