You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Sequelize中同步所有模型?执行sync()未生成数据表

问题原因及解决方法

核心问题

你的代码里没有正确初始化Product模型,仅导入了模型函数但未执行,导致Sequelize实例无法识别该模型,因此不会创建对应的数据表。

解决步骤

修改同步文件中注册模型的代码:

// 原错误代码
db.product = Product

// 修改为
db.product = Product(sequelize, DataTypes)

完整修正后的同步文件代码

const { Sequelize, DataTypes } = require('sequelize');
const dbConfig = require('./config/dbConfig');
const Product = require('./models/product')

const sequelize = new Sequelize(
    dbConfig.DB,
    dbConfig.USER,
    dbConfig.PASSWORD, {
    host: dbConfig.HOST,
    dialect: dbConfig.dialect,
    operatorsAliases: false,
    pool: {
        max: dbConfig.pool.max,
        min: dbConfig.pool.min,
        aquire: dbConfig.pool.aquire,
        idle: dbConfig.pool.idle
    }
}
)

sequelize.authenticate()
    .then(() => {
        console.log("Connected to the database successfuly !");
    }).catch((err) => {
        console.log("Error: " + err)
    })


const db = {}

db.Sequelize = Sequelize
db.sequelize = sequelize
// 执行模型函数,将模型关联到Sequelize实例
db.product = Product(sequelize, DataTypes)


db.sequelize.sync({ force: true })
    .then(() => {
        console.log("re-sync done!");
    })


module.exports = db

补充说明

  • 模型文件导出的是接收sequelize和DataTypes参数的函数,必须调用该函数并传入对应参数,才能让模型与你的Sequelize实例绑定。
  • 若有多个模型,需按相同方式逐一初始化,比如db.user = User(sequelize, DataTypes),确保sync()能识别所有需要创建的数据表。

内容的提问来源于stack exchange,提问作者Muhammad Essam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 23:15:40