2013-09-16 114 views
6

我正在尝试使用postgresql和我的节点应用程序使用sequelize。但我无法让它工作。当我运行sequelize -m我得到这个输出:续集迁移失败(postgres)

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创建表,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); 
    } 
} 

编辑

我孤立了错误,如果我c省略或更改此行:

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

它工作良好。这似乎是一个ENUM类型的问题

回答

2

您的语法ENUMs只是不正确的。下面是它应该是什么:

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

检查出data types的sequelize文档,如果您有更多问题

+0

刚一说明,这似乎在最新的改变http://docs.sequelizejs.com/en/latest/docs /模型定义/ – theptrk