Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SequelizeForeignKeyConstraintError: insert or update on table ... violates foreign key constraint \..._id_fkey\"

I don't understand this error (SequelizeForeignKeyConstraintError: insert or update on table \"segment\" violates foreign key constraint \"segment_id_fkey\"). I've read other answers on this topic on StackOverflow, but nothing that has pointed me in the right direction.

What I'm trying to do is have a user submit a form with some data that's then saved as a Segment model. The Segment model looks like so:

module.exports = (sequelize, DataTypes) => {
  const Segment = sequelize.define(
    'segment',
    {
      id: {
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true
      },
      provider_id: {
        type: DataTypes.INTEGER,
        references: {
          model: 'provider',
          key: 'id'
        }
      },
      summary_id: {
        type: DataTypes.INTEGER,
        references: {
          model: 'summary',
          key: 'id'
        }
      },
      audience_id: {
        type: DataTypes.INTEGER,
        references: {
          model: 'audience',
          key: 'id'
        }
      },
      onboarding_id: {
        type: DataTypes.INTEGER,
        references: {
          model: 'onboarding',
          key: 'id'
        }
      }
    },
    {
      // disable the modification of table names; By default, sequelize will automatically
      // transform all passed model names (first parameter of define) into plural.
      // if you don't want that, set the following
      freezeTableName: true,
      tableName: 'segment'
    }
  );

  Segment.associate = models => {
    Segment.belongsTo(models.Provider, { foreignKey: 'id' });
    Segment.belongsTo(models.Summary, { foreignKey: 'id' });
    Segment.belongsTo(models.Audience, { foreignKey: 'id' });
    Segment.belongsTo(models.Onboarding, { foreignKey: 'id' });
  };

  return Segment;
};

The models that the Segment refers to (ie Provider, Summary, Audience, Onboarding), have a hasMany relationship to the Segment model. Something like so:

Provider.associate = models => {
  Provider.hasMany(models.Segment, { foreignKey: 'provider_id' });
};

I have a feeling that the error has to do with the way I'm associating my models.

Any and all help is super appreciated! Thanks in advance!

like image 659
Zack Carlson Avatar asked Oct 30 '25 06:10

Zack Carlson


1 Answers

Keep associations like:

Segment.associate = models => {
    Segment.belongsTo(models.Provider, { foreignKey: 'provider_id' });
    Segment.belongsTo(models.Summary, { foreignKey: 'summary_id' });
    Segment.belongsTo(models.Audience, { foreignKey: 'audience_id' });
    Segment.belongsTo(models.Onboarding, { foreignKey: 'onboarding_id' });
}

and in Providers, summary, Audience and oboarding files:

Providers.associate = models => {
    Providers.belongsTo(models.Segments, { foreignKey: 'id' });    
};
like image 68
Dinesh Kumar Avatar answered Nov 01 '25 06:11

Dinesh Kumar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!