gpt4 book ai didi

mysql - 字段 'foreign key' 没有默认值

转载 作者:行者123 更新时间:2023-11-29 02:11:22 26 4
gpt4 key购买 nike

我使用 nodeJS 和 MySQL 开发了我的后端,我有如下三个表:

足球运动员:

CREATE TABLE fournisseurs (

Codef bigint(21) NOT NULL ,
Noment varchar(20) COLLATE utf8_unicode_ci NOT NULL,
Prenomf varchar(20) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (Codef, Prenomf)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

类别:

CREATE TABLE categorie (

Idcat bigint(21) NOT NULL AUTO_INCREMENT,
Nomcat varchar(20) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (Idcat, Nomcat)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

产品:

CREATE TABLE produits (

Codep bigint(21) NOT NULL AUTO_INCREMENT,
Reference bigint(21) NOT NULL,
Nomp varchar(20) COLLATE utf8_unicode_ci NOT NULL ,
Codef bigint(21) NOT NULL ,
Prenomf varchar(20) COLLATE utf8_unicode_ci NOT NULL,
Idcat bigint(21) NOT NULL ,
Nomcat varchar(20) COLLATE utf8_unicode_ci NOT NULL,
Description varchar(100) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (Codep ),
FOREIGN KEY (Codef, Prenomf) REFERENCES fournisseurs (Codef, Prenomf)
ON DELETE CASCADE
ON UPDATE CASCADE ,
FOREIGN KEY (Idcat, Nomcat) REFERENCES categorie (Idcat, Nomcat)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=10;

我尝试插入 Produits 表,如下所示:

exports.ajouterprod = function(req, res) {
console.log("req", req.body);
var today = new Date();
var produits = {
"Reference": req.body.Reference,
"Nomp": req.body.Nomp,
// "Codef": req.body.Codef,
"Prenomf": req.body.Prenomf,
//"Idcat": req.body.Idcat,
"Nomcat": req.body.Nomcat,
"Description": req.body.Description
}
connection.query('INSERT INTO produits SET ?', produits, function(error, results, fields) {
if (error) {
console.log("error ocurred", error);
res.send({
"code": 400,
"failed": "error ocurred"
})
}
else {

res.send({
"code": 200,
"success": "produit registered sucessfully"
});
}

})
};

当我用 Postman 运行它时,我得到:"failed": "error ocurred"并且 发生错误 { Error: ER_NO_DEFAULT_FOR_FIELD: Field 'Codef' doesn't have a default value 在我的后端。如您所见,Codef 是我的表 fournisseurs 上的主键。

我该如何解决?

最佳答案

为什么会出现这个错误:

由于您正在向 Produits 中插入数据并且未指定任何值 Codef,因此生成此错误是因为外键需要一个值(也可以为 null)

解决方案 1:更改 Produits 的表结构,使其具有一些默认值,该值要么出现在另一个表(引用外键的地方)中,要么为空值。

解决方案 2:在代码级别添加一些默认值,在引用外键的表中相同。

关于mysql - 字段 'foreign key' 没有默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51566793/

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