Sequelize迁移仅修改列类型时,原约束是否会保留?
解答
核心结论
allowNull: false约束会完全保留unique: true约束也会保留,不会被删除
详细说明
allowNull约束的情况
你在迁移的changeColumn配置里明确写了allowNull: false,和原模型的配置完全一致。Sequelize执行这个迁移时,会确保该列的非空约束维持原样,不会因为修改列的长度限制而被移除或改变。unique约束的情况
虽然迁移代码里没有显式声明unique: true,但Sequelize的changeColumn方法遵循只修改明确指定属性的逻辑——它不会主动去移除未在参数中提及的现有约束(包括唯一约束)。
另外,你只是将STRING改为STRING(400)(仅限制字符长度),这种修改不会破坏已存在的唯一索引,数据库会自动让索引适配新的列长度,唯一约束依然有效。
额外提示
如果之后需要移除unique约束,你必须在changeColumn的配置中明确添加unique: false,否则该约束会一直保留在列上。
内容的提问来源于stack exchange,提问作者Vitz
相关产品推荐
相关产品推荐

