运行
sequelize db:migrate
打印出来:
Sequelize [Node: 6.9.4, CLI: 2.4.0, ORM: 3.24.6]
Loaded configuration file "config\development.json".
Unable to connect to database: SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306
然后看看 config/development.json 我看到:
{
"development": {
"username": "postgres",
"password": "password",
"database": "mydb",
"host": "127.0.0.1",
"port": "5432",
"dialect": "postgres"
},
"test": {
"username": "postgres",
"password": "password",
"database": "mydb",
"host": "127.0.0.1",
"port": "5432",
"dialect": "postgres"
},
"production": {
"username": "postgres",
"password": "password",
"database": "mydb",
"host": "127.0.0.1",
"port": "5432",
"dialect": "postgres"
}
}
为什么?为什么 sequelize 仍然试图转到 mysql 端口?我还添加了您在配置文件中看到的端口。我找不到任何说不支持 postgres 的资源。但似乎 sequelize-cli 仍然不关心我在配置文件中输入的方言甚至端口号。
最佳答案
似乎您的 NODE_ENV
与 development
、 test
或 production
不同,因为如果它与其中任何一个匹配,您将获得类似的消息
Loaded configuration file "config/development.json".
Using environment "development".
Unable to connect to database: SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306
但是,在您的情况下,它不会打印它使用的环境,因此这意味着您的
development.json
文件中没有它。你可以试试sequelize db:migrate --env development
根据
sequelize-cli
源代码,它使用 getEnvironment
方法获取 env 变量,如下所示:getEnvironment: function () {
return args.env || process.env.NODE_ENV || 'development';
}
如果您不传递
--env
参数,则它采用当前 NODE_ENV
。这将意味着你的不同。
关于sequelize.js - sequelize cli 不使用 postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42537186/