我正在使用Sequelize 2.0.0-rc3,我遇到了一个错误;好像我正在编写正确的迁移但是我在尝试运行它时遇到错误。我在后端使用Postgresql。一切似乎都很好;这是一个新的,孤立的问题。 Document表和id列存在(在之前的迁移中创建它,但发现它不是自动递增id的;因此尝试创建此迁移以添加自动递增)。
var p = require('bluebird');
module.exports = {
up: function (migration, DataTypes, done) {
var promises = [];
promises.push(
migration.changeColumn(
'Document',
'id',
{
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
allowNull: false
}
));
p.all(promises).then(done.bind(null, null)).catch(function (err) {
console.error('Migration Failed: ', err);
done(err);
});
},
down: function (migration, DataTypes, done) {
done();
}
};
可能未处理的TypeError:无法调用未定义的方法'push' at Object.module.exports.QueryGenerator.dataTypeMapping(/Users/csimpson/code/temp-cause-server/node_modules/sequelize/lib/dialects/postgres/query-generator.js:848:32) at Object.module.exports.QueryGenerator.pgDataTypeMapping(/Users/csimpson/code/temp-cause-server/node_modules/sequelize/lib/dialects/postgres/query-generator.js:843:19) at Object.module.exports.QueryGenerator.changeColumnQuery(/Users/csimpson/code/temp-cause-server/node_modules/sequelize/lib/dialects/postgres/query-generator.js:250:31) at module.exports.QueryInterface.changeColumn(/Users/csimpson/code/temp-cause-server/node_modules/sequelize/lib/query-interface.js:345:37) 在module.exports.Migration。(匿名函数)[as changeColumn](/Users/csimpson/code/temp-cause-server/node_modules/sequelize/lib/migration.js:26:50) at /Users/csimpson/code/temp-cause-server/database/migrations/20141216000001-alter-id-increment.js:8:41 在tryCatch1(/Users/csimpson/code/temp-cause-server/node_modules/sequelize/node_modules/bluebird/js/main/util.js:45:21) 在Promise $ _callHandler [as _callHandler](/Users/csimpson/code/temp-cause-server/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:660:13) 在Promise $ _settlePromiseFromHandler [as _settlePromiseFromHandler](/Users/csimpson/code/temp-cause-server/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:675:18) 在Promise $ _settlePromiseAt(/Users/csimpson/code/temp-cause-server/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:845:14)
答案 0 :(得分:0)
我也遇到了Possibly unhandled TypeError: Cannot call method 'push' of undefined
错误。我还试图将id
字段添加到现有表中,这是我在上一次迁移中创建的表。
我的修复有两个部分:
1)将unique: true
添加到id
列。
2)撤消上一次迁移(我创建了要添加id
列的表的位置),然后立即运行两次迁移。
在我完成这两项工作之前,我的迁移尝试失败了。