迁移模型时,使用MySQL方言的Sequelize无法生成外键 我正在使用sequelize的命令创建模型并将其迁移到 在MySql数据库中生成表 要生成新模型:sequelize模型:create--name Demo--attributes列:string 在模型和迁移文件生成后,添加几行代码,使用给定的代码片段进行关联和外键约束: 在Comapny的派生/子表中:

迁移模型时,使用MySQL方言的Sequelize无法生成外键 我正在使用sequelize的命令创建模型并将其迁移到 在MySql数据库中生成表 要生成新模型:sequelize模型:create--name Demo--attributes列:string 在模型和迁移文件生成后,添加几行代码,使用给定的代码片段进行关联和外键约束: 在Comapny的派生/子表中:,mysql,foreign-keys,command,sequelize.js,constraints,Mysql,Foreign Keys,Command,Sequelize.js,Constraints,在基本/父表Comapany中: Company.associate = function (models) { // associations can be defined here Company.hasMany(models.Employee,{ foreignKey:"companyId", }) }; 但是它并不反映在表->更改表->外键约束中您的外键被弄乱了。。。。我认为它应该看起来更像下面

在基本/父表Comapany中:

    Company.associate = function (models) {
        // associations can be defined here
        Company.hasMany(models.Employee,{
            foreignKey:"companyId",
        })
    };

但是它并不反映在表->更改表->外键约束中

您的外键被弄乱了。。。。我认为它应该看起来更像下面这样,因为您希望在引用公司表的id字段的employee表中有一个名为companyId的字段

Employee.associate = function (models) {
            // associations can be defined here
            Employee.belongsTo(models.Company, {
                sourceKey: "companyId",
                foreignKey: "id",
                onDelete: "CASCADE"
            })
        };

这一个将假定您的源密钥是您的主键,可能是id

  • 外键约束将反映到MySQL数据库及其 表,仅当我们随模型文件一起更改迁移文件时
  • 我们必须添加迁移文件,如:
    companyId:{
        type: Sequelize.INTEGER,
        onDelete: "CASCADE",
        references: {
            model: "Comapany",
            key: "id"
        }
      },
    
  • 这对我来说很成功
Company.associate = function (models) {
        // associations can be defined here
        Company.hasMany(models.Employee,{
            foreignKey:"companyId",
        })
    };
companyId:{
    type: Sequelize.INTEGER,
    onDelete: "CASCADE",
    references: {
        model: "Comapany",
        key: "id"
    }
  },