首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sequelize db:迁移挂起

sequelize db:迁移挂起
EN

Stack Overflow用户
提问于 2019-05-01 21:49:00
回答 2查看 853关注 0票数 2

我正在尝试让我的模型迁移到我正在使用的postgress数据库,它是在本地托管的,我确认它已经启动并运行良好。

当我运行sequelize db:migrate时,它显示

代码语言:javascript
复制
Loaded configuration file "config\config.json"
Using environment "development"

然后什么都没有,我不能在控制台或任何东西中输入,它就一直停在那里,直到我ctrl+C退出它

我尝试还原我对模型和迁移文件所做的所有更改,以防出现问题,但无济于事。

编辑:我也尝试过通过npm重新安装sequelize cli,但也没有解决这个问题。

以下是模型和迁移代码,以防出现这种情况

型号:

代码语言:javascript
复制
'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;
};

迁移

代码语言:javascript
复制
'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');
  }
};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-17 11:18:00

我们最近遇到了同样的问题,修复方法是在config.json的环境配置中添加以下选项:

代码语言:javascript
复制
dialectOptions: {
    ssl: true
}

当sequelize cli尝试验证SequelizeMeta表的模式时,它运行一系列查询-其中一个查询在没有上述选项的情况下运行时在大约半小时后超时。

注意:我们的第一次迁移运行仍在运行,因为它正在创建表,因此跳过了验证。

票数 1
EN

Stack Overflow用户

发布于 2020-06-07 05:10:45

我在这里发布这篇文章是因为我在这篇文章上浪费了很多时间:

迁移无限期挂起的另一个原因是试图并行运行查询(使用Promise.all添加多个列,例如...)。

我这样做了,它在本地工作,但它一定达到了heroku上并发连接的限制。看起来sequelize-cli隐藏了一些有用的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55937298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档