Sequelize:将列类型更改为 ENUM
Posted
技术标签:
【中文标题】Sequelize:将列类型更改为 ENUM【英文标题】:Sequelize: Change column type to ENUM 【发布时间】:2016-10-06 16:58:45 【问题描述】:在将数据保留在该列中时,我似乎找不到将列从 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】:Postgres 不知道 oldcolumn
中的字符串数据可以适合枚举值 - 尝试强制转换它
return queryInterface.sequelize.query("UPDATE time SET newcolum = oldcolumn::enum_time_newcolumn");
【讨论】:
以上是关于Sequelize:将列类型更改为 ENUM的主要内容,如果未能解决你的问题,请参考以下文章
Postgres 和 Laravel 如何将列从字符串类型更改为整数?