2017-07-07 49 views
2

我正在使用gulp任务来迁移数据库。为了测试目的,我使用不同的数据库。所以我需要完全相同的数据库。我正在尝试使用sequelize.sync({force:true}),但它不起作用。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 })) 
.... 
.... 
.... 
) 

用力:真正应该工作,但对我来说我收到错误,如mydatbaseName.tablename是不存在的。

我已经创建了新的测试数据库。我不想手动创建testdatabase中的所有内容,所以我使用迁移,但我gusse同步无法正常工作。

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

在此先感谢。

+0

你是否在使用sequelize-cli进行迁移 – Shivam

+0

@Shivam:不,我没有使用sequelize-cli。我正在使用“sequelize”:“^ 3.24.3”。 –

+0

如果手动创建了表格,那么它可以用于插入查询。但我不想手动创建表。强制:真应该映射模式。 –

回答

1

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

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

+0

如果您的答案解决了您的问题,请检查答案一侧的空心绿色复选标记,以确认它已解决。 – NobleUplift