Migration simulation fails (postgres)

I am trying to use postgresql with my node application using sequelize. But I can’t make it work. When I run sequelize -m , I get this output:

 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) 

This is my 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" } } 

And this is 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

I highlighted the error if I comment or change the following lines:

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

It works well. There seems to be a problem with type ENUM

+6
source share
2 answers

Your syntax for ENUM is simply incorrect. Here is what it should be:

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

Check out documentation on continuing data types if you have additional questions.

+2
source

I have a problem too. Looking through the Postgres source, it seems that Enum should be created separately before assigning a column type.

I'm not sure sequelize supports this operation

Source: http://www.postgresql.org/docs/9.2/static/datatype-enum.html

0
source

Source: https://habr.com/ru/post/953936/


All Articles