Sequelize迁移失败,并出现errno:150“外键约束格式不正确”

时间:2020-02-21 12:08:47

标签: mysql node.js sequelize.js

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

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“外键约束的格式不正确”

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

1 个答案:

答案 0 :(得分:0)

已解决:看来文档有误。这样做的方法是:

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