我需要帮助弄清楚为什么我无法在本地计算机上运行 knex 迁移
使用。看来 knex 连接到 postgres 数据库时遇到了一些问题。在终端中运行 knex migration:latest
会出现以下错误:
⇒ knex migrate:latest
Using environment: development
Error: Unable to acquire a connection
at Client_PG.acquireConnection (/Users/moldot/prjx-albert/server/node_modules/knex/lib/client.js:332:40)
at Runner.ensureConnection (/Users/moldot/prjx-albert/server/node_modules/knex/lib/runner.js:233:24)
at Runner.run (/Users/moldot/prjx-albert/server/node_modules/knex/lib/runner.js:47:42)
at SchemaBuilder.Target.then (/Users/moldot/prjx-albert/server/node_modules/knex/lib/interface.js:39:43)
at Migrator._ensureTable (/Users/moldot/prjx-albert/server/node_modules/knex/lib/migrate/index.js:256:66)
at Migrator._listCompleted (/Users/moldot/prjx-albert/server/node_modules/knex/lib/migrate/index.js:405:17)
我在本地 Macbook 上使用 postgres。这是我的 knex 文件:
var PostgressConnectionStringParser = require('pg-connection-string');
module.exports = {
heroku: {
client: 'pg',
connection: process.env.DATABASE_URL,
migrations: {
directory: "migrations",
tableName: "migrations",
},
},
development: {
client: "pg",
host: "localhost",
port: 5432,
username: "moldot",
database: "c_dev",
migrations: {
directory: "migrations",
tableName: "migrations",
},
ssl: true,
},
}
运行psql
工作正常:
⇒ psql -h localhost -p 5432 -U moldot -d c_dev
psql (10.1, server 9.5.4)
Type "help" for help.
c_dev=#
我正在 knexfile.js 所在的同一目录中运行该命令。谢谢!
最佳答案
您的 knexfile 的语法无效。您还没有在那里给出 connection
属性。
它应该看起来像这样:
module.exports = {
heroku: {
client: 'pg',
connection: process.env.DATABASE_URL,
migrations: {
directory: "migrations",
tableName: "migrations"
}
},
development: {
client: "pg",
connection: {
host: "localhost",
port: 5432,
username: "moldot",
database: "c_dev",
},
migrations: {
directory: "migrations",
tableName: "migrations"
}
}
}
关于javascript - knex 迁移 :latest cannot connect while psql works fine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51034046/