mysql - Sequelize MySQL Migration - false 独有
问题描述
我正在尝试在 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,但不适用于唯一属性。我是 Sequelize 的新手,所以我想知道这里出了什么问题。有人可以帮我吗?
非常感谢您提前。
解决方案
Sequelize 具有“removeConstraint”方法,使用该方法您将能够删除属性的约束。
public removeConstraint(tableName: string, constraintName: string, options: Object): Promise
实际上,如果您在创建时没有指定“constraintName”,它应该是“attributename_unique_key”的形式。
请尝试使用这种方式
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");
},
};
有关更多信息,请在此处查看文档
推荐阅读
- r - 使用旧版本的 R 安装旧版本的软件包
- android - NavigationView 标题视图项 null
- android - 带有 Cloud Firestore 投票应用的 Flutter 应用
- python-2.7 - PyQt5 QComboBox 列表项改变位置
- matlab - 在功能块 Simulink 中使用 set_param 的 Mxarray 错误
- swiftui - 禁用 SwiftUI SegmentedPickerStyle Picker 中的段?
- python - Pandas 读取 .csv 并设置索引列
- c# - 显示缩短的 URL
- reactjs - React:如何防止在`map`中重新渲染子组件?
- java - 处理 Future#get 和 InterruptedException 声纳 java:S2142