Sequelize Migration Error

时间:2014-12-16 16:36:44

标签: node.js postgresql sequelize.js

我正在使用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)

1 个答案:

答案 0 :(得分:0)

我也遇到了Possibly unhandled TypeError: Cannot call method 'push' of undefined错误。我还试图将id字段添加到现有表中,这是我在上一次迁移中创建的表。

我的修复有两个部分:

1)将unique: true添加到id列。

2)撤消上一次迁移(我创建了要添加id列的表的位置),然后立即运行两次迁移。

在我完成这两项工作之前,我的迁移尝试失败了。