mysql - SEQUELIZE - 尝试在表中插入数据时出错
问题描述
agricultural_machine
table和之间存在 1:1 的关系tractor
。在tractor
表中,它具有与 tractor_id 相关的农业机器 id。
低于模型
模型 - 拖拉机
module.exports = function (sequelize, DataTypes) {
const tractor = sequelize.define('tractor', {
tractor_id: {
type: DataTypes.INTEGER(11).UNSIGNED.ZEROFILL,
allowNull: false,
primaryKey: true,
references: {
model: 'agricultural_machine',
key: 'agricultural_machine_id',
},
},
traction_id: {
type: DataTypes.INTEGER(5).UNSIGNED.ZEROFILL,
allowNull: false,
references: {
model: 'traction',
key: 'id',
}
},
power_id: {
type: DataTypes.INTEGER(5),
allowNull: false,
references: {
model: 'power',
key: 'id',
}
},
fuel_id: {
type: DataTypes.INTEGER(5).UNSIGNED.ZEROFILL,
allowNull: false,
references: {
model: 'fuel',
key: 'id',
}
},
}, {
tableName: 'tractor',
timestamps: false
});
tractor.associate = (models) => {
tractor.belongsTo(models.agricultural_machine, { foreignKey: 'tractor_id' });
tractor.belongsTo(models.traction, { foreignKey: 'traction_id' });
tractor.belongsTo(models.power, { foreignKey: 'power_id' });
tractor.belongsTo(models.fuel, { foreignKey: 'fuel_id' });
};
return tractor;
};
型号 - 农业机械
module.exports = function (sequelize, DataTypes) {
const agricultural_machine = sequelize.define('agricultural_machine', {
agricultural_machine_id: {
type: DataTypes.INTEGER(11).UNSIGNED.ZEROFILL,
allowNull: false,
primaryKey: true,
references: {
model: 'itens',
key: 'id'
},
references: {
model: 'agricultural_implement',
key: 'agricultural_implement_id'
},
},
worked_hours: {
type: DataTypes.STRING(45),
allowNull: true
},
year: {
type: DataTypes.INTEGER,
allowNull: false
},
description: {
type: DataTypes.TEXT,
allowNull: true
},
brand_agricultural_machine_id: {
type: DataTypes.INTEGER(5).UNSIGNED.ZEROFILL,
allowNull: false,
primaryKey: true,
references: {
model: 'brand_agricultural_machine',
key: 'id'
}
},
model_agricultural_machine_id: {
type: DataTypes.INTEGER,
allowNull: false,
primaryKey: true,
references: {
model: 'model_agricultural_machine',
key: 'id'
}
}
}, {
tableName: 'agricultural_machine',
timestamps: false
});
agricultural_machine.associate = (models) => {
agricultural_machine.belongsTo(models.itens, { foreignKey: 'agricultural_machine_id' });
agricultural_machine.belongsTo(models.brand_agricultural_machine, { foreignKey: 'brand_agricultural_machine_id' });
agricultural_machine.belongsTo(models.model_agricultural_machine, { foreignKey: 'model_agricultural_machine_id' });
agricultural_machine.belongsTo(models.tractor, { foreignKey: 'tractor_id' });
};
return agricultural_machine;
};
通过插入Insomnia
{
"announcement_vehicle": {
"personId": 1,
"price": "50.000,00",
"description": "Implemento Agrícola",
"iten": {
"type": "4",
"agricultural_machine": {
"tractor": {
"tractor_id": 1,
"traction_id": 1,
"power_id": 1,
"fuel_id": 1
},
"description": "Máquina Agrícola ACGA",
"worked_hours": "124",
"year": 2020,
"brand_agricultural_machine_id": 2,
"model_agricultural_machine_id": 1
}
}
}
}
我有这个错误
ForeignKeyConstraintError [SequelizeForeignKeyConstraintError]: Cannot add or update a child row: a foreign key constraint fails (`autoparanaiba`.`tractor`, CONSTRAINT `fk_tractorXagricultural_machine` FOREIGN KEY (`tractor_id`) REFERENCES `agricultural_machine` (`agricultural_machine_id`) ON DELETE NO ACTION ON UPDATE N)
at Query.formatError (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/sequelize/lib/dialects/mysql/query.js:233:16)
at Execute.handler [as onResult] (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/sequelize/lib/dialects/mysql/query.js:51:23)
at Execute.execute (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/commands/command.js:30:14)
at Connection.handlePacket (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/connection.js:408:32)
at PacketParser.onPacket (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/connection.js:70:12)
at PacketParser.executeStart (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/packet_parser.js:75:16)
at Socket.<anonymous> (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/connection.js:77:25)
at Socket.emit (events.js:223:5)
at Socket.EventEmitter.emit (domain.js:475:20)
at addChunk (_stream_readable.js:309:12)
at readableAddChunk (_stream_readable.js:290:11)
at Socket.Readable.push (_stream_readable.js:224:10)
at TCP.onStreamRead (internal/stream_base_commons.js:181:23) {
name: 'SequelizeForeignKeyConstraintError',
parent: Error: Cannot add or update a child row: a foreign key constraint fails (`autoparanaiba`.`tractor`, CONSTRAINT `fk_tractorXagricultural_machine` FOREIGN KEY (`tractor_id`) REFERENCES `agricultural_machine` (`agricultural_machine_id`) ON DELETE NO ACTION ON UPDATE N)
at Packet.asError (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/packets/packet.js:708:17)
at Execute.execute (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/commands/command.js:28:26)
at Connection.handlePacket (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/connection.js:408:32)
at PacketParser.onPacket (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/connection.js:70:12)
at PacketParser.executeStart (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/packet_parser.js:75:16)
at Socket.<anonymous> (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/connection.js:77:25)
at Socket.emit (events.js:223:5)
at Socket.EventEmitter.emit (domain.js:475:20)
at addChunk (_stream_readable.js:309:12)
at readableAddChunk (_stream_readable.js:290:11)
at Socket.Readable.push (_stream_readable.js:224:10)
at TCP.onStreamRead (internal/stream_base_commons.js:181:23) {
code: 'ER_NO_REFERENCED_ROW_2',
errno: 1452,
sqlState: '23000',
sqlMessage: 'Cannot add or update a child row: a foreign key constraint fails (`autoparanaiba`.`tractor`, CONSTRAINT `fk_tractorXagricultural_machine` FOREIGN KEY (`tractor_id`) REFERENCES `agricultural_machine` (`agricultural_machine_id`) ON DELETE NO ACTION ON UPDATE N)',
sql: 'INSERT INTO `tractor` (`tractor_id`,`traction_id`,`power_id`,`fuel_id`) VALUES (?,?,?,?);',
parameters: [ 1, 1, 1, 1 ]
},
original: Error: Cannot add or update a child row: a foreign key constraint fails (`autoparanaiba`.`tractor`, CONSTRAINT `fk_tractorXagricultural_machine` FOREIGN KEY (`tractor_id`) REFERENCES `agricultural_machine` (`agricultural_machine_id`) ON DELETE NO ACTION ON UPDATE N)
at Packet.asError (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/packets/packet.js:708:17)
at Execute.execute (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/commands/command.js:28:26)
at Connection.handlePacket (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/connection.js:408:32)
at PacketParser.onPacket (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/connection.js:70:12)
at PacketParser.executeStart (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/packet_parser.js:75:16)
at Socket.<anonymous> (/home/vagnerwentz/Documents/freelance/autoparanaiba-api/node_modules/mysql2/lib/connection.js:77:25)
at Socket.emit (events.js:223:5)
at Socket.EventEmitter.emit (domain.js:475:20)
at addChunk (_stream_readable.js:309:12)
at readableAddChunk (_stream_readable.js:290:11)
at Socket.Readable.push (_stream_readable.js:224:10)
at TCP.onStreamRead (internal/stream_base_commons.js:181:23) {
code: 'ER_NO_REFERENCED_ROW_2',
errno: 1452,
sqlState: '23000',
sqlMessage: 'Cannot add or update a child row: a foreign key constraint fails (`autoparanaiba`.`tractor`, CONSTRAINT `fk_tractorXagricultural_machine` FOREIGN KEY (`tractor_id`) REFERENCES `agricultural_machine` (`agricultural_machine_id`) ON DELETE NO ACTION ON UPDATE N)',
sql: 'INSERT INTO `tractor` (`tractor_id`,`traction_id`,`power_id`,`fuel_id`) VALUES (?,?,?,?);',
parameters: [ 1, 1, 1, 1 ]
},
sql: 'INSERT INTO `tractor` (`tractor_id`,`traction_id`,`power_id`,`fuel_id`) VALUES (?,?,?,?);',
parameters: [ 1, 1, 1, 1 ],
fields: [ 'tractor_id' ],
table: 'agricultural_machine',
value: 1,
index: 'fk_tractorXagricultural_machine',
reltype: 'child'
}
解决方案
推荐阅读
- performance - StreamBuilder 更新性能(一个 vs 多个)
- python - PyTorch 张量切片和内存使用情况
- visual-studio-code - Windows 上的远程容器 - 如何?
- javascript - 在 REACT 中通过 API 构建无限加载时,即使我向下滚动很多页码也不会在控制台中更新
- haskell - Learn you a Haskell for Great Good 中的错字?
- c# - c#中的下拉框记事本如何在按下按钮时加载文本文件?
- python - pySpark 映射多个变量
- linux - 按作者过滤并计算所有数字 im txt 文件 - Linux 终端,bash
- c - C - 使用 rpcgen 生成文件时出现奇怪的 size_t 错误
- javascript - Amcharts 4:重装图表时出现幽灵子弹/重复子弹