我有一张叫做字符的表。每个字符都有一个称为“状态”的枚举,可以是“悲伤”或“快乐”。如何为列添加新状态“ confused”?我尝试了这种迁移,但失败了:
migration.describeTable('characters').success(function (attributes) {
migration.changeColumn('characters', 'state',
{
type: DataTypes.ENUM,
values: ['sad', 'happy', 'confused']
})
.complete(done);
});
Run Code Online (Sandbox Code Playgroud)
它抱怨错误:类型“ enum_characters_state”已经存在。
扩展 briangonzalez 答案,您还需要一个 down 函数来撤消迁移:
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.sequelize.query("ALTER TYPE enum_type_name ADD VALUE 'new_value'");
},
down: (queryInterface, Sequelize) => {
var query = 'DELETE FROM pg_enum ' +
'WHERE enumlabel = \'new_value\' ' +
'AND enumtypid = ( SELECT oid FROM pg_type WHERE typname = \'enum_type_name\')';
return queryInterface.sequelize.query(query);
}
};
Run Code Online (Sandbox Code Playgroud)
更改enum_type_name和new_value以满足您的需要。
使用最新版本的Sequelize,您可以通过运行查询(假定使用Postgres)来实现:
module.exports = {
up: function (queryInterface, Sequelize) {
return queryInterface.sequelize.query("ALTER TYPE enum_character_state ADD VALUE 'confused';");
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2995 次 |
| 最近记录: |