背景
我正在创建一个样板快递应用程序。我已经使用pg和sequelize配置了数据库连接。当我添加cli并尝试运行sequlize db:migrate
时,出现此错误,
错误:不支持方言[object Object]。支持的 方言:mssql,mysql,postgres和sqlite。
复制
生成一个新的快速申请。安装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
Package Json
"pg": "^7.4.3",
"pg-hstore": "^2.3.2",
"sequelize": "^4.38.0"
全局安装
npm install -g sequelize-cli
问题
现在主要的重写版本已经发布,可以续集了,添加方言以使迁移得以运行的正确方法是什么?
请务必注意,我的连接正常。我可以毫无问题地查询数据库,运行迁移时只有sequelize-cli
不起作用。
答案 0 :(得分:0)
我遇到了同样的问题。您需要进行一些更改。首先,我不确定为什么您有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上可以正常使用。