【发布时间】: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