【问题标题】:Postgres Error when creating a new table using migration command使用迁移命令创建新表时出现 Postgres 错误
【发布时间】:2022-01-06 02:31:02
【问题描述】:

我正在尝试在我的系统中设置一个 nodeJs 项目。本项目本地和开发有不同的数据库环境,在knex.js中添加了用户名、密码和其他凭据

我已经在本地安装了 Postgres(并且使用了与我的系统相同的用户名和密码)

我需要创建一个新表,为此我运行了这个命令来创建迁移文件

knex migrate:make 'test' --env local --knexfile db/knex.js

创建了一个文件。然后在这个文件中我添加了创建表的代码

exports.up = function (knex, Promise) {
    return knex.schema
        .createTable('oxygen', table => {
            table.increments('id').primary();
            table.string('name').notNull();
        });
};

exports.down = function (knex, Promise) {
    return knex.schema.dropTable('oxygen');
};

现在为了在数据库中创建表,我运行了这个迁移命令

knex migrate:latest --env local --knexfile db/knex.js

但是我收到了这个错误

Working directory changed to ~/backend/db
Using environment: local
password authentication failed for user "postgres"
error: password authentication failed for user "postgres"
    at Connection.parseE (/home/bhavya/backend/node_modules/pg/lib/connection.js:614:13)
    at Connection.parseMessage (/home/bhavya/backend/node_modules/pg/lib/connection.js:413:19)
    at Socket.<anonymous> (/home/bhavya/backend/node_modules/pg/lib/connection.js:129:22)
    at Socket.emit (events.js:315:20)
    at addChunk (_stream_readable.js:295:12)
    at readableAddChunk (_stream_readable.js:271:9)
    at Socket.Readable.push (_stream_readable.js:212:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:186:23)

knex.js 文件包含以下部分用于连接本地数据库的代码

local: {
        client: 'pg',
        useNullAsDefault: true,
        migrations: {
            directory: './../db/migrations'
        },
        seeds: {
            directory: './../db/seeds'
        },
        connection: {
            host: '127.0.0.1',
            user: 'postgres',
            password: 'postgres',
            database: 'backend'
        }
    },

【问题讨论】:

  • error: password authentication failed for user "postgres" 非常明确地告诉您连接到数据库的凭据错误...
  • @AKX 是的,但是我已经重新检查了密码凭据并且它们是正确的。那么knex migrate:make 'test' --env local --knexfile db/knex.js这个命令是怎么运行成功的呢?
  • 也许它没有连接到数据库只是为了创建一个新的迁移文件?
  • @AKX 我正在使用 ubuntu 并设置了新的用户密码。是否可以运行任何命令以在身份验证模式下本地连接到 Postgres,以便我可以验证我在 knex.js 中使用的用户密码是否正确?
  • 看起来 Knex 正在尝试使用用户名 postgres 进行连接。您的 knexfile 中到底有什么?

标签: node.js postgresql knex.js


【解决方案1】:

@escoder,使用以下命令通过Ubuntu终端使用用户名和密码本地登录PostgreSQL

psql postgresql://&lt;username&gt;:&lt;password&gt;@localhost:5432

那么,如果您在终端中遇到以下错误

FATAL: password authentication failed for user "postgres"

您必须重设 postgres 用户的密码。

【讨论】:

    猜你喜欢
    • 2021-07-09
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多