javascript - PostgreSQL Sequelize数据库错误: unrecognized configuration parameter "tables"

标签 javascript sql node.js postgresql sequelize.js

使用 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/

相关文章:

javascript - 隐藏字段的 Knockout.js 验证

javascript - 内部循环只运行一次,包含循环无限运行

javascript - 如何将 Backbonejs 路由器与 Twitter Bootstrap 选项卡结合起来?

javascript - 在 emit 完成之后而不是在 emit 之前更改 IF 语句中的值

sql - 存储过程中的简单查询

mysql - SQL 查询错误信息

javascript - 读取 mongoose 中没有子字段属性的文档子字段会返回一个空对象

node.js - TypeScript + Node.js 文件系统问题

php - 查看许多状态或创建一个表来存储所有状态

node.js - 尝试连接到未监听的主机时,Nodejs net 不会抛出错误