我想将列类型从BLOB更改为TEXT,我认为以某种方式指定如何处理每个字段(即使用utf8编码创建字符串)是合乎逻辑的,但是如果可以,我找不到任何地方在迁移期间定义JS转换。
答案 0 :(得分:1)
当前不可能,因为底层的SQL模型不支持它。相反,您可以创建一个占位符列,将值复制过来,删除旧列,然后重命名新列。
更多信息请参见Github线程here。从线程中举一个例子:
module.exports = {
up: async (queryInterface, Sequelize) => {
return [
await queryInterface.addColumn('jobs', 'matterInfo', {
type: Sequelize.STRING(150),
defaultValue: ''
}),
await queryInterface.sequelize.query(
'UPDATE jobs SET matterInfo = CONCAT( matterNumber, " / ", matterName);'
),
// remove unused fields
await queryInterface.removeColumn('jobs', 'matterName'),
await queryInterface.removeColumn('jobs', 'matterNumber')
];
},
down: (queryInterface, Sequelize) => {
/*
Add reverting commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.dropTable('users');
*/
}
};