sequelize.sync({force:true})有时不起作用

时间:2017-07-07 12:46:58

标签: node.js gulp sequelize.js database-migration sequelize-cli

我正在使用gulp任务来迁移数据库。出于测试目的,我使用不同的数据库。所以我需要完全相同的数据库。我正在尝试使用sequelize.sync({force:true}),但它不起作用。

我在门户模型中拥有所有模型。这是代码:

const models = require('portal-models');
gulp.task('migrate', ['create-database'], (done) => {
  models.sequelize.query('SET FOREIGN_KEY_CHECKS = 0')
  .then(() => models.sequelize.sync({ force: true, alter: true }))
....
....
....
)

使用Force:true它应该可以工作但是对我来说我得到的错误就像mydatbaseName.tablename不存在。

我创建了新的测试数据库。我不想在testdatabase中手动创建所有内容,所以我使用的是迁移,但是我没有正常工作。

任何人都可以告诉我,我应该遵循什么?

先谢谢。

1 个答案:

答案 0 :(得分:3)

最后我发现了错误。 models.sequelize.sync({ force: true })  它工作正常,但我无法在命令提示符上看到任何日志,所以我认为同步不能正常工作。我已经添加了 models.sequelize.sync({ force: true, logging: console.log }))  有了这个,我能够看到日志,它正在丢弃所有表格并再次创建。问题不在于sequelize.sync()。问题出在我的数据库名称上,它只引用了开发数据库,​​而我正在testDatabase上执行查询。

在运行测试之前,我只是改变了我的数据库 export MYSQL_DATABASENAME = test_database_name。  问题解决了。