Vibhu
Vibhu

Reputation: 36

Unhandled rejection SequelizeDatabaseError: Cannot add foreign key constraint

I have 2 tables: admin_user and admin_account.

const Sequelize = require('sequelize');
module.exports = (sequelize, DataTypes) => {
  var admin_user = sequelize.define('admin_user', {
    id: {
      autoIncrement: true,
      type: Sequelize.INTEGER,
      primaryKey: true
    },
    name: {
      type: Sequelize.STRING
    },
    email: {
      type: Sequelize.STRING,
      allowNull: false,
      unique: true,
      validate: {
        isEmail: true,
      }
    },
    user_name:{
      type: Sequelize.STRING,
      allowNull: false,
      unique: true
    }
  });

  admin_user.associate = (models) =>{
    admin_user.hasOne(models.admin_account, { foreignKey: 'admin_user_id' });
  };

  return admin_user;
};


'use strict';
const Sequelize = require('sequelize');
module.exports = (sequelize, DataTypes) => {
  var admin_account = sequelize.define('admin_account', {
    admin_user_id:{
      type: Sequelize.INTEGER,
      primaryKey: true
    },
    password: {
      type: Sequelize.STRING
    }
  });
  return admin_account;
};

and getting this error while creating the table:

Executing (default): CREATE TABLE IF NOT EXISTS admin_users (id INTEGER auto_increment , name VARCHAR(255), email VARCHAR(255) NOT NULL UNIQUE, user_name VARCHAR(255) NOT NULL UNIQUE, createdAt DATETIME NOT NULL, updatedAt DATETIME NOT NULL, PRIMARY KEY (id)) ENGINE=InnoDB; Executing (default): SHOW INDEX FROM admin_users FROM milkman_prod1 Executing (default): CREATE TABLE IF NOT EXISTS admin_accounts (admin_user_id INTEGER , password VARCHAR(255), createdAt DATETIME NOT NULL, updatedAt DATETIME NOT NULL, PRIMARY KEY (admin_user_id), FOREIGN KEY (admin_user_id) REFERENCES admin_users (id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB; Unhandled rejection SequelizeDatabaseError: Cannot add foreign key constraint

Upvotes: 1

Views: 1397

Answers (1)

Riajul Islam
Riajul Islam

Reputation: 1485

Please try with this code:

    'use strict';
    const Sequelize = require('sequelize');
    module.exports = (sequelize, DataTypes) => {
      var admin_account = sequelize.define('admin_user', {
        admin_user_id:{
          type: Sequelize.INTEGER,
          primaryKey: true
        },
        password: {
          type: Sequelize.STRING
        }
      });
admin_account.associate = (models) =>{
    admin_account.belongsTo(models.admin_user);
  };
      return admin_account;
    };

Upvotes: 1

Related Questions