我有一张桌子。
我添加了一个新专栏。
即使我在续集模型中设置了默认值,这些列仍然是空的。
所以我收到错误Unhandled rejection SequelizeDatabaseError: column "col_name" contains null values
如何在创建时使用默认值填充新列,这样就不会破坏空约束。
答案 0 :(得分:1)
您可以先更新值:
update t
set col_name = ?
where col_name is null;
然后添加not null
约束。
答案 1 :(得分:0)
即使我在续集模型中设置了默认值
我怀疑迁移和模型之间存在差异。要使用包含默认值的迁移插入列,请在迁移中使用defaultValue
。
以下是一个工作示例:
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.addColumn('tests', 'new_column', {
defaultValue: 'test',
type: Sequelize.STRING
})
}
}
options
中addColumn
对象的documentation很难找到,它列出了不同的方法