我使用Sequelize编写我的架构,并且File
模型的file_type
列定义为:
file_type: {
type: Sequelize.ENUM(
'image/jpeg',
'image/png',
'image/gif',
'audio/mpeg3',
'audio/wav',
'application/pdf',
'application/msword',
'application/x-compressed',
),
allowNull: false,
},
我需要更改此枚举以使用新的 mimeTypesEnum ,其中还包含一些当前使用的值:
queryInterface.changeColumn('files', 'file_type', {
type: mimeTypesEnum,
allowNull: false,
}),
当然,这不起作用,因为它试图重新定义 enum_files_file_type 。
我似乎有几个选择:
ADD VALUE
查询。file_type
列以及 enum_files_file_type 类型,上述 changeColumn 功能将起作用。选项 1 我觉得会变得不必要地复杂化,不得不迭代旧的和新的类型,找出哪些已经存在,哪些要添加BEFORE或AFTER等等...而且它不是un -doable所以我不能写 down 函数。
选项 2 我将丢失当前file_type
列中的所有数据,因为它是allowNull: false
我还必须提供defaultValue
我不希望这个专栏有。
是否有一种简单,干净的方法可以在保留当前数据的同时迁移此列?