2

その列のデータを永続化しながら、列を 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 型ですが、式は文字型可変です]

4

1 に答える 1

4

Postgres は、文字列データがoldcolumn列挙値に収まるかどうかを認識していません - キャストしてみてください

return queryInterface.sequelize.query("UPDATE time SET newcolum = oldcolumn::enum_time_newcolumn");
于 2016-06-07T15:01:29.537 に答える