2013-09-16 3 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); 
    } 
} 

EDIT

Я выделил ошибку, если я c или изменить это направление:

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

это работает хорошо. Кажется, что проблема связана с ENUM типа

ответ

2

Ваш синтаксис для ENUM является некорректным. Вот что должно быть:

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

Заканчивать документацию sequelize на data types, если у вас есть вопросы

+0

Просто к сведению, это, кажется, изменилось в последнее http://docs.sequelizejs.com/en/latest/docs/модели четкости / – theptrk

0

У меня та же проблема, как хорошо. Просматривая источник Postgres, кажется, что Enum должен быть создан отдельно, прежде чем назначить тип столбца.

Я не уверен, что sequelize поддерживает эту операцию

Источник: http://www.postgresql.org/docs/9.2/static/datatype-enum.html