gpt4 book ai didi

mysql - 错误 : Cannot add foreign key constraint-

转载 作者:行者123 更新时间:2023-12-03 22:34:55 26 4
gpt4 key购买 nike

我用 mysql db 和 Sequalize 作为 ORM 编写了一个 nodejs 应用程序。一切正常。我定义模型和迁移以创建数据库和播种机。我想创建一个 产品模型 ,在这个模型中我有两个外键:(categoryId 和 shopId)。

当我创建迁移文件时,我在产品模型之后创建商店模型。这对我来说是一个问题。当我想使用“sequelize db:migrate”命令在数据库中创建表时,出现此错误:

错误:无法添加外键约束

我读了这个 link 并且知道这不是我的问题的原因。
但我该如何解决这个错误?我尝试将 up 和 down 定义为异步函数,但此错误未解决。

module.exports = {
up: (queryInterface, Sequelize) => queryInterface.createTable(
'products', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
name: {
type: Sequelize.STRING(255),
allowNull: false,

},
description: {
type: Sequelize.STRING(1024),
allowNull: false,

},
price: {
type: Sequelize.FLOAT,
allowNull: false,
},
old_price: {
type: Sequelize.FLOAT,
allowNull: false,
},
type: {
type: Sequelize.STRING(255),
},
height: {
type: Sequelize.INTEGER,
},
width: {
type: Sequelize.INTEGER,
},
categoryId: {
type: Sequelize.INTEGER,
references: {
model: 'categories',
key: 'id',
},
},
shopId: {
type: Sequelize.INTEGER,
references: {
model: 'shops',
key: 'id',
},
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
},
},
),
down: (queryInterface, Sequelize) => queryInterface.dropTable('products'),
}

最佳答案

您将 model 作为字符串传递。你需要指向你的类(class)。

试试这个:

 categoryId: {
type: Sequelize.INTEGER,
references: {
model: categories,
key: 'id',
},
},

关于mysql - 错误 : Cannot add foreign key constraint-,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62046169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com