使用 Sequelize 5.21.3 运行以下代码时获取 PostgreSQL 11.5 数据库中所有表的列表:
sequelize.query('SHOW TABLES', {
type: sequelize.QueryTypes.SHOWTABLES
})
.then(result => {
console.log(result)
})
我们得到错误:
Unhandled rejection SequelizeDatabaseError: unrecognized configuration parameter "tables"
使用 Sequelize 获取当前 PostgreSQL 数据库中所有表的列表的正确方法是什么?
完整代码
const Sequelize = require('sequelize');
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.json')[env];
sequelize = new Sequelize(config.database, config.username, config.password, config);
sequelize.query('SHOW Tables', {
type: sequelize.QueryTypes.SHOWTABLES
})
.then(result => {
console.log(result)
})
完整错误堆栈
Executing (default): SHOW TABLES
Unhandled rejection SequelizeDatabaseError: unrecognized configuration parameter "tables"
at Query.formatError (/Users/nyxynyx/test/node_modules/sequelize/lib/dialects/postgres/query.js:366:16)
at /Users/nyxynyx/test/node_modules/sequelize/lib/dialects/postgres/query.js:72:18
at tryCatcher (/Users/nyxynyx/test/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/Users/nyxynyx/test/node_modules/bluebird/js/release/promise.js:547:31)
at Promise._settlePromise (/Users/nyxynyx/test/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (/Users/nyxynyx/test/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/Users/nyxynyx/test/node_modules/bluebird/js/release/promise.js:725:18)
at _drainQueueStep (/Users/nyxynyx/test/node_modules/bluebird/js/release/async.js:93:12)
at _drainQueue (/Users/nyxynyx/test/node_modules/bluebird/js/release/async.js:86:9)
at Async._drainQueues (/Users/nyxynyx/test/node_modules/bluebird/js/release/async.js:102:5)
at Immediate.Async.drainQueues [as _onImmediate] (/Users/nyxynyx/test/node_modules/bluebird/js/release/async.js:15:14)
at processImmediate (internal/timers.js:439:21)
配置
{
"development": {
"username": "postgres",
"password": "mypassword",
"database": "database_development",
"host": "127.0.0.1",
"dialect": "postgres",
"operatorsAliases": "0",
"define": {
"timestamps": false
}
},
...
最佳答案
SHOW TABLES
是 MySQL 语法,Postgres 不支持。
如果您正在运行 psql,则可以使用 \dt
命令。
更通用的解决方案是查询 system view information_schema.tables
(在更多 RDBMS 中可用):
select table_schema, table_name from information_schema.tables
您还可以查询pg_catalog.pg_tables
,这是 Postgres 特定的。
关于javascript - PostgreSQL Sequelize数据库错误: unrecognized configuration parameter "tables",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59556433/