Sequelize 不在 postgresql 中创建任何表
Sequelize not creating any tables in postgresql
我刚刚将一个项目拉到一台新机器上,我将 PostgreSQL 用于我的数据库,将 sequelize 作为 ORM,以及 feathersjs 和 express 或中间件。我尝试像往常一样启动项目,但它不起作用。
我有一个包含我所有环境配置信息的 .env 文件,我通常做的是先 运行 sequelize db:create
,创建数据库,然后,我使用 npm start
创建 tables。但是,当我这样做时,它不会创建任何 table 或显示任何错误,它只会显示 info: Feathers application started on http://localhost:3030
但是当我打开 pgAdmin 时,数据库是空的。我尝试在 sequelize 中登录,但它根本没有显示任何内容。我还删除了 ENV,它在 npm start
处没有显示任何错误(它确实在 sequelize db:create
处显示错误。这让我抓狂。
这是我的 sequelize.js:
require('dotenv').config();
const Sequelize = require('sequelize');
const { Op } = Sequelize;
const operatorsAliases = {
// ...
};
module.exports = function (app) {
const connectionString = `postgres://${process.env.DB_USERNAME}:${process.env.DB_PASSWORD}@` +
`${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`;
const sequelize = new Sequelize(connectionString, {
dialect: 'postgres',
dialectOptions: {
ssl: false
},
logging: console.log,
operatorsAliases,
define: {
freezeTableName: true
}
});
const oldSetup = app.setup;
app.set('sequelizeClient', sequelize);
app.setup = function (...args) {
const result = oldSetup.apply(this, args);
// Set up data relationships
const models = sequelize.models;
Object.keys(models).forEach(name => {
if ('associate' in models[name]) {
models[name].associate(models);
}
});
// Sync to the database
sequelize.sync({ logging: console.log });
return result;
};
};
我的 npm 启动脚本只是指向一个 app.js 文件,我只是在其中导入 sequelize with app.configure(sequelize);
创建数据库后可能需要运行sequelize db:migrate
事实证明实际上是节点 14 的问题。我必须安装更新版本的 node-Postgres (pg@8.0.3),如 here
中所指出的
我刚刚将一个项目拉到一台新机器上,我将 PostgreSQL 用于我的数据库,将 sequelize 作为 ORM,以及 feathersjs 和 express 或中间件。我尝试像往常一样启动项目,但它不起作用。
我有一个包含我所有环境配置信息的 .env 文件,我通常做的是先 运行 sequelize db:create
,创建数据库,然后,我使用 npm start
创建 tables。但是,当我这样做时,它不会创建任何 table 或显示任何错误,它只会显示 info: Feathers application started on http://localhost:3030
但是当我打开 pgAdmin 时,数据库是空的。我尝试在 sequelize 中登录,但它根本没有显示任何内容。我还删除了 ENV,它在 npm start
处没有显示任何错误(它确实在 sequelize db:create
处显示错误。这让我抓狂。
这是我的 sequelize.js:
require('dotenv').config();
const Sequelize = require('sequelize');
const { Op } = Sequelize;
const operatorsAliases = {
// ...
};
module.exports = function (app) {
const connectionString = `postgres://${process.env.DB_USERNAME}:${process.env.DB_PASSWORD}@` +
`${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`;
const sequelize = new Sequelize(connectionString, {
dialect: 'postgres',
dialectOptions: {
ssl: false
},
logging: console.log,
operatorsAliases,
define: {
freezeTableName: true
}
});
const oldSetup = app.setup;
app.set('sequelizeClient', sequelize);
app.setup = function (...args) {
const result = oldSetup.apply(this, args);
// Set up data relationships
const models = sequelize.models;
Object.keys(models).forEach(name => {
if ('associate' in models[name]) {
models[name].associate(models);
}
});
// Sync to the database
sequelize.sync({ logging: console.log });
return result;
};
};
我的 npm 启动脚本只是指向一个 app.js 文件,我只是在其中导入 sequelize with app.configure(sequelize);
创建数据库后可能需要运行sequelize db:migrate
事实证明实际上是节点 14 的问题。我必须安装更新版本的 node-Postgres (pg@8.0.3),如 here
中所指出的