Sequelize:将列类型更改为 ENUM
Sequelize: Change column type to ENUM
我似乎无法找到将列中的数据保留在该列中的同时将列从 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) {
}
};
但是我return迁移时出现以下错误:
error: column "newcolumn" is of type enum_time_newcolumn but expression is of type character varying]
Postgres 不知道 oldcolumn
中的字符串数据可以放入枚举值中 - 尝试转换它
return queryInterface.sequelize.query("UPDATE time SET newcolum = oldcolumn::enum_time_newcolumn");
我似乎无法找到将列中的数据保留在该列中的同时将列从 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) {
}
};
但是我return迁移时出现以下错误:
error: column "newcolumn" is of type enum_time_newcolumn but expression is of type character varying]
Postgres 不知道 oldcolumn
中的字符串数据可以放入枚举值中 - 尝试转换它
return queryInterface.sequelize.query("UPDATE time SET newcolum = oldcolumn::enum_time_newcolumn");