2013-09-16 12 views
6

Ich versuche Postgresql mit meiner Knoten-Anwendung mit Sequelize zu verwenden. Aber ich kann es nicht funktionieren lassen. Als ich sequelize -m laufen bekomme ich diese Ausgabe:Sequelize Migration fehlschlägt (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) 

Das ist mein config.json ist:

{ 
    "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" 
    } 
} 

Und das ist 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); 
    } 
} 

EDIT

Ich isoliert den Fehler, wenn ich c Ändern oder ändern Sie diese Zeilen:

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

es funktioniert gut. Es scheint ein Problem mit dem ENUM-Typ zu sein

Antwort

2

Ihre Syntax für ENUMs ist nur falsch. Hier ist, was es sein sollte:

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

Schauen Sie sich die sequelize Dokumentation auf data types, wenn Sie weitere Fragen haben

+0

Nur ein Hinweis, dies in der neuesten geändert zu werden scheint http://docs.sequelizejs.com/en/latest/docs/models-definition / – theptrk

Verwandte Themen