我正在尝试用Sequelize和MySQL编写一个迁移,它将唯一属性设置为false。到目前为止,这是我的方法:
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.changeColumn("users", "name", {
type: Sequelize.STRING,
allowNull: false,
unique: true,
});
await queryInterface.changeColumn("users", "email", {
type: Sequelize.STRING,
allowNull: false,
unique: true,
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.changeColumn("users", "name", {
type: Sequelize.STRING,
allowNull: true,
unique: false,
});
await queryInterface.changeColumn("users", "email", {
type: Sequelize.STRING,
allowNull: true,
unique: false,
});
},
};向上迁移类似于charme,向下迁移适用于allowNull,但不适用于唯一属性。我是新的续集,所以我想知道,这里出了什么问题。有人能帮帮我吗?
非常提前感谢您。
发布于 2021-02-28 04:04:39
Sequelize具有"removeConstraint“方法,使用该方法可以删除属性的约束。
public removeConstraint(tableName: string, constraintName: string, options: Object): Promise实际上,如果您在创建时没有指定“属性名”,它应该是"constraintName“的形式
_
独一无二
_
键“。
请尝试使用这种方式
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.changeColumn("users", "name", {
type: Sequelize.STRING,
allowNull: false,
unique: true,
});
await queryInterface.changeColumn("users", "email", {
type: Sequelize.STRING,
allowNull: false,
unique: true,
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.changeColumn("users", "name", {
type: Sequelize.STRING,
allowNull: true,
});
await queryInterface.removeConstraint("users", "name_unique_key");
await queryInterface.changeColumn("users", "email", {
type: Sequelize.STRING,
allowNull: true,
});
await queryInterface.removeConstraint("users", "email_unique_key");
},
};有关更多信息,请查看文档
这里
https://stackoverflow.com/questions/66399694
复制相似问题