续集迁移脚本抛出errorUnhandled拒绝SequelizeBaseError:SQLITE_ERROR:没有这样的表
我已经写了sequelizer的迁移javascript来改变现有的列在一个表中,但是当我运行命令sequelizer db:migrate
,它给出的错误
== 20170212050240-alter_col_tag_subject: migrating =======
Unhandled rejection SequelizeBaseError: SQLITE_ERROR: no such table: subject_tags
== 20170212050240-alter_col_tag_subject: migrated (0.241s)
这里是迁移文件的代码
'use strict'; module.exports = { up: function (queryInterface, Sequelize) { return [ queryInterface.changeColumn( 'subject_tags', 'tag', { type: Sequelize.STRING, unique: true, validate: { len: [1, 250] } } ), queryInterface.changeColumn( 'subject_tags', 'tag_description', { type: Sequelize.STRING, allowNull: false, validate: { len: [1, 250] } } ), queryInterface.changeColumn( 'subject_tags', 'associated_subject', { type: Sequelize.STRING, allowNull: false, validate: { len: [1, 250] } } ) ]; }, down: function (queryInterface, Sequelize) { } };
有谁知道我为什么遇到这个问题?
在做了大量的谷歌search之后,我在github的讨论中find了答案
引用sdepold
大家好。 迁移function应该返回承诺。 所以如果你想在迁移中做很多事情,只要返回一个如下所示的链接:
return queryInterface.removeColumn('users', 'email').then(function () { return queryInterface.removeColumn('users', 'encryptedPassword'); });
因此是正确的代码
module.exports = { up: function (queryInterface, Sequelize) { return queryInterface.changeColumn( 'subject_tags', 'tag', { type: Sequelize.STRING, unique: true, validate: { len: [1, 250] } } ). then( function () { return queryInterface.changeColumn( #....... ); }).then( function () { return queryInterface.changeColumn( #....... ); }) ;
希望这个答案的问题。