【问题标题】:Sequelize migration fails with errno: 150 "Foreign key constraint is incorrectly formed"Sequelize 迁移失败并显示 errno:150“外键约束格式不正确”
【发布时间】:2020-02-21 12:08:47
【问题描述】:

我已使用此迁移创建了一个表:

up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('articles', {
      id: { type: Sequelize.INTEGER, primaryKey: true,autoIncrement: true },
      title: { type: Sequelize.STRING },
      content: { type: Sequelize.TEXT },
      createdAt: {type:Sequelize.DataTypes.DATE},
      updatedAt: {type:Sequelize.DataTypes.DATE}
    },
 );

然后,在新的迁移中,我试图创建另一个表,它将引用第一个:

up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('comments', {
      id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true },
      title: { type: Sequelize.STRING },
      content: { type: Sequelize.TEXT },
      createdAt: { type: Sequelize.DataTypes.DATE },
      updatedAt: { type: Sequelize.DataTypes.DATE },
      articleId: {
        type: Sequelize.INTEGER,
        references: {
          model: {
            tableName: 'articles',
            schema: 'schema'
          },
          key: 'id'
        },
      }
    },
    );
  }

我明白了

errno: 150 "外键约束格式不正确"

尝试以各种方式建立这种关联,正如我在互联网上看到的那样 - 都出现相同的错误。 这里可能是什么问题?我会提到第一个表(文章)已经存在于数据库中。

【问题讨论】:

    标签: mysql node.js sequelize.js


    【解决方案1】:

    已解决:文档中似乎有错误。方法是:

    articleId: {
            type: Sequelize.INTEGER,
            references: {
              model:"articles",
              key:"id"
            },
          }
    

    【讨论】:

      猜你喜欢
      • 2021-04-28
      • 2018-05-23
      • 2015-12-16
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 2018-03-02
      • 2020-07-07
      相关资源
      最近更新 更多