Estoy tratando de escribir una migración en Sequelize y MySQL, que establece el atributo único en falso. Este es mi enfoque hasta ahora:
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, }); }, };La migración hacia arriba funciona de maravilla, la migración hacia abajo funciona para allowNull, pero no para un atributo único. Soy nuevo en Sequelize, así que me pregunto qué está fallando aquí. ¿Alguien me puede ayudar?
Muchas gracias por adelantado.
Sequelize tiene el método "removeConstraint", mediante el cual podrá eliminar la restricción del atributo.
public removeConstraint(tableName: string, constraintName: string, options: Object): PromiseEn realidad, si no especifica el "nombre de restricción" al crear, debe tener la forma "nombre_atributo_clave_única".
Por favor intente usar de esta manera
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"); }, };Para obtener más información, consulte la documentación aquí .