nukeLEAR
nukeLEAR

Reputation: 35

sequelize db:migrate hanging

I am trying to get my models to migrate to the postgress db I am using, which is hosted locally and I confirmed is up and running fine.

When I run sequelize db:migrate it says

Loaded configuration file "config\config.json"
Using environment "development"

then nothing, I can't type into the console or anything, it just sits there until I ctrl+C out of it

I tried reverting all the changes I had made to the models and migrations files in case there was an issue there and it didn't help.

edit: I also tried reinstalling the sequelize-cli through npm and that also did not fix the issue

here is the model and migration code in case that is the issue

model:

'use strict';
module.exports = (sequelize, DataTypes) => {
  const Contract = sequelize.define('Contract', {
    buyout: DataTypes.DOUBLE,
    collateral: DataTypes.DOUBLE,
    contract_id: {type:DataTypes.INTEGER,allowNull: false,},
    date_expired: {type:DataTypes.DATE,allowNull: false,},
    date_issued: {type:DataTypes.DATE,allowNull: false,},
    days_to_complete: DataTypes.INTEGER,
    end_location_id: DataTypes.BIGINT,
    for_corporation: DataTypes.BOOLEAN,
    issuer_corporation_id: {type:DataTypes.INTEGER,allowNull: false,},
    issuer_id: {type:DataTypes.INTEGER,allowNull: false,},
    price: DataTypes.DOUBLE,
    reward: DataTypes.DOUBLE,
    start_location_id: DataTypes.BIGINT,
    title: DataTypes.STRING,
    type: {type:DataTypes.STRING,allowNull: false,},
    volume: DataTypes.DOUBLE
  });
  Contract.associate = (models) => {
    Contract.hasMany(models.ContractItem,{
      foreignKey: 'contract_id'
    });
  };
  return Contract;
};

migration

'use strict';
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('Contracts', {
      buyout: {
        type: Sequelize.DOUBLE
      },
      collateral: {
        type: Sequelize.DOUBLE
      },
      contract_id: {
        allowNull: false,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      date_expired: {
        allowNull: false,
        type: Sequelize.DATE
      },
      date_issued: {
        allowNull: false,
        type: Sequelize.DATE
      },
      days_to_complete: {
        type: Sequelize.INTEGER
      },
      end_location_id: {
        type: Sequelize.BIGINT
      },
      for_corporation: {
        type: Sequelize.BOOLEAN
      },
      issuer_corporation_id: {
        allowNull: false,
        type: Sequelize.INTEGER
      },
      issuer_id: {
        allowNull: false,
        type: Sequelize.INTEGER
      },
      price: {
        type: Sequelize.DOUBLE
      },
      reward: {
        type: Sequelize.DOUBLE
      },
      start_location_id: {
        type: Sequelize.BIGINT
      },
      title: {
        type: Sequelize.STRING
      },
      type: {
        allowNull: false,
        type: Sequelize.STRING
      },
      volume: {
        type: Sequelize.DOUBLE
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable('Contracts');
  }
};

Upvotes: 3

Views: 1942

Answers (3)

EspressoBeans
EspressoBeans

Reputation: 2024

I had this issue as well, it turned out being that I needed to exit out of a pgAdmin which was preventing the ability of the migration command process to connect to the database.

Upvotes: 2

Guillaume
Guillaume

Reputation: 23

I post this here because I lost quite some time on this one:

Another reason for a migration to hang indefinitely is trying to run queries in parallel (using a Promise.all to add multiple columns for example...).

I did that, it was working in local, but it must have hit a limit of concurrent connections on heroku. Seems like sequelize-cli hides some useful errors.

Upvotes: 1

Daniel
Daniel

Reputation: 26

We recently encountered the same issue, the fix was to add the following option to our environment config in the config.json:

dialectOptions: {
    ssl: true
}

When the sequelize cli attempts to validate the schema of the SequelizeMeta table it runs a sequence of queries - one of these was timing out after about half an hour when run without the above option.

Note: Our first migration run was still working as it was creating the table and so skipped the validation.

Upvotes: 1

Related Questions