sequelize.sync{force:true}不起作用,方法的记录为空

问题描述

在撰写本期杂志时,我已经看到很多问题。他们中没有一个有相同的问题,并且在连续尝试20h后解决此问题时,我感到非常紧张,如果没有看到类似的问题,非常抱歉。好的,问题如下:我正在使用nodejs,expressjs(4.17),sequelize-cli(6.2.0)和sequelizejs(6.3.5)来做服务器并与mysql(mysql2 2.1.0)通信,并且由于某些原因,当我使用函数clearInterval(intervalID)(是否有sequelize.sync())时,它只是不会更新已经创建的数据库中的表,它什么也不做,没有错误,没有警告,只是不做应该做的事。 我使用{force:true}创建了模型,因此创建的迁移中没有我手动插入的任何内容,因为我搜索并没有更改迁移文件。然后,我运行npx sequelize model:generate --name ... --attributes ... 进行向数据库的迁移,最后对未同步的模型进行了一些更改。

这是server.js代码:

npx sequelize db:migrate

我的app.js代码:

const http = require('http')
const Sequelize = require('sequelize')
const app = require('./src/app')
const port = process.env.PORT || 3000
const server = http.createServer(app)

const contatos = require('./src/_db/models/contatos')
const corretores = require('./src/_db/models/corretores')
const imoveis = require('./src/_db/models/imoveis')
const tipoimovel = require('./src/_db/models/tipoimovel')

const sequelize = new Sequelize(process.env.DB_NAME,process.env.DB_USERNAME,process.env.DB_PASSWORD,{
    host: 'localhost',dialect: "mysql" /* one of 'mysql' | 'mariadb' | 'postgres' | 'mssql' */,logging: console.log,})

sequelize.authenticate().then( () => {
    console.log('Connection has been established successfully.');
    

    sequelize.sync({logging:console.log,force:true})
        .then(() => {
            // console.log(`Database & tables created!`);
            return server.listen(port)
        }).catch((error)=>{
            return console.error(error);
        });

}).catch((error) => {
    console.error('Unable to connect to the database:',error);
})

所有控制台结果:

const express = require('express')
const bodyParser = require('body-parser')
const morgan = require('morgan')
const Sequelize = require('sequelize')
const app = express()

app.use(morgan('dev'))
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

app.use((req,res,next) => {
    res.header('Access-Control-Allow-Origin','*')
    res.header(
        'Access-Control-Allow-Headers','Origin,X-Requested-With,Accept,Authorization'
    )
    if (req.method === 'OPTIONS') {
        res.header('Access-Control-Allow-Methods','PUT,POST,PATCH,DELETE,GET')
        return res.status(200).json({})
    }
    next()
})



app.use((req,next) => {
    const error = new Error('Not found')
    error.status = 404
    next(error)
})

app.use((error,req,next) => {
    res.status(error.status || 500)
    res.json({
        error: {
            message: error.message
        }
    })
})

module.exports = app

最后是我试图用来更新数据库的Model的示例,已经进行了更改:

[nodemon] restarting due to changes...  
[nodemon] starting 'node server.js'    
Executing (default): SELECT 1+1 AS result     
Connection has been established successfully.     
Executing (default): SELECT 1+1 AS result     
Database & tables created! 

解决方法

我已经使用过这种同步功能,并且为我工作过,如果需要,您可以尝试将其作为解决方案

'use strict';
const Sequelize = require('sequelize');
const cls = require('cls-hooked');
const namespace = cls.createNamespace('my-very-own-namespace');
Sequelize.useCLS(namespace);
const config = require("../environments/index");

// server connection settings
var db_instance = new Sequelize(config.DB.database,config.DB.username,config.DB.password,{
  host: config.DB.host,dialect: config.DB.dialect,define: {
    timestamps: false
  },logging: false
});

var sequelize = db_instance;

// checks the database connectivity
sequelize
  .authenticate()
  .then(() => {
    console.log('Connection has been established successfully.');
  })
  .catch(err => {
    console.error('Unable to connect to the database:',err);
  });


const db = {};

db.sequelize = sequelize;
db.Sequelize = Sequelize;

// create the modal instance 
db.users = require('../model/users.model')(sequelize,Sequelize);
db.country = require('../model/country.model')(sequelize,Sequelize);
db.state = require('../model/state.model')(sequelize,Sequelize);
db.city = require('../model/city.model')(sequelize,Sequelize);
db.verify_otp = require('../model/verify_otp.model')(sequelize,Sequelize);
db.organizations = require('../model/organizations.model')(sequelize,Sequelize);
db.features = require('../model/features.model')(sequelize,Sequelize);
db.user_features = require('../model/user_features.model')(sequelize,Sequelize);
db.roles = require('../model/roles.model')(sequelize,Sequelize);
db.user_roles = require('../model/user_roles.model')(sequelize,Sequelize);



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

module.exports = db;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...