Sequelize迁移失败(postgres)

Ale*_*ejo 6 javascript orm database-migration node.js sequelize.js

我正在尝试使用sequelize使用postgresql和我的节点应用程序.但我不能让它发挥作用.当我运行时,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)
Run Code Online (Sandbox Code Playgroud)

这是我的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"
  }
}
Run Code Online (Sandbox Code Playgroud)

这是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);
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑

我隔离了错误,如果我评论或改变这一行:

      genero: {
        type:   DataTypes.ENUM,
        values: ['Hombre', 'Mujer']
      },
Run Code Online (Sandbox Code Playgroud)

它运作良好.这似乎是ENUM类型的问题

小智 2

您的 ENUM 语法是不正确的。它应该是这样的:

type: DataTypes.ENUM('Hombre', 'Mujer')
Run Code Online (Sandbox Code Playgroud)

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