【问题标题】:Sequelize migrate failing due to dialect object Object not supported error由于方言对象对象不支持错误,Sequelize 迁移失败
【发布时间】:2018-12-13 02:47:55
【问题描述】:

背景

我正在创建一个样板快速应用程序。我已经使用 pg 和 sequelize 配置了一个数据库连接。当我添加 cli 并尝试运行 sequlize db:migrate 时出现此错误,

错误:不支持方言 [object Object]。支持的 方言:mssql、mysql、postgres 和 sqlite。

复制

生成一个新的 express 应用程序。安装 pg、pg-hstore、sequelize 和 sequelize-cli。

运行sequelize init

将 config.js 文件添加到从 sequelize init 创建的 /config 路径中​​。

在 config.js 文件中创建连接。

更新 sequelize-cli 创建的 config.json 文件。

运行sequelize db:migrate

示例

/config/config.js

const Sequelize = require('sequelize');
const { username, host, database, password, port } = require('../secrets/db');

const sequelize = new Sequelize(database, username, password, {
  host,
  port,
  dialect: 'postgres',
  operatorsAliases: false,
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
});

module.exports = sequelize;

/config/config.js

{
  "development": {
    "username": "user",
    "password": "pass",
    "database": "db",
    "host": "host",
    "dialect": "postgres"
  },
  "test": {
    "username": "user",
    "password": "pass",
    "database": "db",
    "host": "host",
    "dialect": "postgres"
  },
  "production": {
    "username": "user",
    "password": "pass",
    "database": "db",
    "host": "host",
    "dialect": "postgres"
  }
}

问题

我希望初始迁移能够运行,但会出现错误,

错误:不支持方言 [object Object]。支持的 方言:mssql、mysql、postgres 和 sqlite。

版本

Dialect: postgres 
Dialect version: "pg":7.4.3 
Sequelize version: 4.38.0
Sequelize-Cli version: 4.0.0

Json 包

"pg": "^7.4.3",
"pg-hstore": "^2.3.2",
"sequelize": "^4.38.0"

全局安装

npm install -g sequelize-cli

问题

既然已经发布了用于 sequelize 的主要重写,那么添加方言以便迁移运行的正确方法是什么?

请务必注意,我的连接工作正常。我可以毫无问题地查询数据库,只有sequelize-cli在运行迁移时不起作用。

【问题讨论】:

  • 你搞清楚了吗?我遇到了同样的错误。
  • 我没有。我什至创建了一个问题并解释说它发生在一个项目的全新安装中,他们的回应是向他们展示我的代码。我认为使用 sequelize 安装一个全新的 express 应用程序非常简单,所以我继续使用我的应用程序而不使用它。我希望看到它起作用,但不值得痛苦。我花了整整一个晚上试图弄清楚。如果你真的解决了,我很想听听你做了什么来解决它。

标签: node.js express sequelize.js node-postgres sequelize-cli


【解决方案1】:

我遇到了同样的问题。您需要更改一些内容。首先,我不确定你为什么有 2 个config/config.js 文件。我假设第二个文件是config.json。遇到这个问题的原因是

const sequelize = new Sequelize(database, username, password, {
  host,
  port,
  dialect: 'postgres',
  operatorsAliases: false,
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
});

这几行代码用于节点服务器访问db,而不是sequlize-cli进行迁移。您需要严格遵循 sequlize-cli 指令。这是链接:instruction

我的代码: config/db.js

const {sequlize_cli} = require('../config.json');

module.exports = sequlize_cli;

config.json

{
    "sequlize_cli":{
        "development":{
            "username":"root",
            "password":"passowrd",
            "database":"monitor",
            "host":"127.0.0.1",
            "dialect": "postgres"
        },
        "test": {
            "username":"root",
            "password":"passowrd",
            "database":"monitor",
            "host":"127.0.0.1",
            "dialect": "postgres"
          },
          "production": {
            "username":"root",
            "password":"passowrd",
            "database":"monitor",
            "host":"127.0.0.1",
            "dialect": "postgres"
          }
    }
}

我猜的要点是直接导出 json 对象,而不是导出 sequelize 对象。另外,这只是postges的问题,我用mysql测试过,你的代码和mysql完美配合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 2020-07-07
    • 2018-10-12
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多