2017-07-07 392 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