续集迁移失败(postgres)

我正在尝试使用postgresql与我的节点应用程序使用sequelize。 但是我不能使它工作。 当我运行sequelize -m我得到这个输出:

 Loaded configuration file "config/config.json". Using environment "development". Running migrations... 20130916100313-create-table-usuarios.js Completed in 21ms events.js:74 throw TypeError('Uncaught, unspecified "error" event.'); ^ TypeError: Uncaught, unspecified "error" event. at TypeError (<anonymous>) at EventEmitter.emit (events.js:74:15) at null.<anonymous> (/home/alejo/workspace/cloudlogger/api/node_modules/sequelize/lib/migrator.js:95:44) at EventEmitter.emit (events.js:98:17) at module.exports.finish (/home/alejo/workspace/cloudlogger/api/node_modules/sequelize/lib/query-chainer.js:138:30) at exec (/home/alejo/workspace/cloudlogger/api/node_modules/sequelize/lib/query-chainer.js:92:16) at onError (/home/alejo/workspace/cloudlogger/api/node_modules/sequelize/lib/query-chainer.js:72:11) at EventEmitter.emit (events.js:95:17) at /home/alejo/workspace/cloudlogger/api/node_modules/sequelize/lib/migration.js:65:19 at null.<anonymous> (/home/alejo/workspace/cloudlogger/api/node_modules/sequelize/lib/emitters/custom-event-emitter.js:52:38) 

这是我的config.json:

 { "development": { "username": "cloudlogger", "password": "foobar", "database": "cloudlogger_dev", "dialect":"postgres", "protocol":"postgres", "host": "127.0.0.1" }, "test": { "username": "cloudlogger", "password": "foobar", "database": "cloudlogger_test", "dialect":"postgres", "protocol":"postgres", "host": "127.0.0.1" }, "production": { "username": "cloudlogger", "password": "foobar", "database": "cloudlogger_pro", "dialect":"postgres", "protocol":"postgres", "host": "127.0.0.1" } } 

这是20130916100313-create-table-usuarios.js

 module.exports = { up: function(migration, DataTypes, done) { migration.createTable('Usuario',{ nombre: { type: DataTypes.STRING, allowBlank: false, }, username: { type: DataTypes.STRING, unique: true, }, genero: { type: DataTypes.ENUM, values: ['Hombre', 'Mujer'] }, email: { type: DataTypes.STRING, unique: true, allowBlank: false, }, password_digest: { type: DataTypes.STRING, allowBlank: false, }, remember_token: DataTypes.STRING, superadministrador: { type: DataTypes.BOOLEAN, defaultValue: false }, token: DataTypes.STRING, fecha_token: { type: DataTypes.DATE, defaultValue: new Date(0) }, lastLogin: DataTypes.DATE }).complete(done); }, down: function(migration, DataTypes, done) { migration.dropAllTables().complete(done); } } 

编辑

我孤立的错误,如果我评论或改变这一行:

  genero: { type: DataTypes.ENUM, values: ['Hombre', 'Mujer'] }, 

它运作良好。 这似乎是ENUMtypes的问题

您的语法ENUMs只是不正确的。 这是它应该是:

 type: DataTypes.ENUM('Hombre', 'Mujer') 

如果您有更多的问题,请查看数据types的续集文档

我也有同样的问题。 通过Postgres源代码看来,Enum的被分配到列types之前必须单独创build。

我不确定sequelize是否支持这个操作

资料来源: http : //www.postgresql.org/docs/9.2/static/datatype-enum.html