Sequelize:将列类型更改为ENUM

时间:2016-06-06 23:34:25

标签: node.js postgresql enums sequelize.js sequelize-cli

在保留该列中的数据时,我似乎无法找到将列从String类型更改为ENUM的正确方法。

我还尝试使用ENUM类型创建新列,然后在列之间复制数据:

// migrations/20160606170538-change-column.js

'use strict';

module.exports = {
  up: function (queryInterface, Sequelize) {
    return queryInterface.addColumn('time', 'newcolumn', {
      allowNull: true,
      type: Sequelize.ENUM('1-day', '7-day', '1-month', '3-month', '6-month', '1-year')
    }).then(function () {
      return queryInterface.sequelize.query("UPDATE time SET newcolum = oldcolumn");
    });
  },

  down: function (queryInterface, Sequelize) {
  }
};

但我在迁移时返回以下错误:

  

错误:列" newcolumn"的类型为enum_time_newcolumn,但表达式的类型为字符变化]

1 个答案:

答案 0 :(得分:3)

Postgres不知道oldcolumn中的字符串数据是否适合枚举值 - 尝试将其转换为

return queryInterface.sequelize.query("UPDATE time SET newcolum = oldcolumn::enum_time_newcolumn");