我的数据库有问题(使用MariaDB)插入新行
我遇到以下错误
无法添加或更新子行:外键约束失败 ({
DbName_boutique
。Commande
,约束bdc_managed_by___fk
外国 关键(bdc_managed_by_user_id
参考(utilisateur
(utilisateur_id
))在Commande中插入(lien_devis,lien_bdc, end_devis,bdc_status,devis_created_by_user_id, bdc_managed_by_user_id,entreprise_id)
我的控制器上有以下代码:
$unknow = NULL;
$end_date = date('d/m/Y', strtotime("+1 month"));
$user = checkConnected($bdd);
Commande::create($bdd, $new_full_modele_devis_path, $new_full_modele_devis_path, $end_date, 0, $user->getId(), $user->getId(), $entreprise->getId());
$ unknow是我稍后在另一个Controller中使用的值。
我的表“ Commande”的构建方式如下:
create table dBName.Commande
(
commande_id int not null
primary key,
lien_devis varchar(255) null,
lien_bdc varchar(255) null,
end_devis datetime null,
bdc_status int null,
devis_created_by_user_id mediumint unsigned null,
bdc_managed_by_user_id mediumint unsigned null,
entreprise_id smallint(5) unsigned null,
constraint bdc_managed_by___fk
foreign key (bdc_managed_by_user_id) references dBName.utilisateur (utilisateur_id),
constraint devis_created_by___fk
foreign key (devis_created_by_user_id) references dBName.utilisateur (utilisateur_id),
constraint entreprise___fk
foreign key (entreprise_id) references dBName.entreprise (entreprise_id)
);
然后我有用户表:
create table dBName.utilisateur
(
utilisateur_id mediumint unsigned auto_increment
primary key,
utilisateur_password varchar(255) null,
utilisateur_nom varchar(50) null,
utilisateur_prenom varchar(50) null,
utilisateur_email varchar(255) null,
utilisateur_telephone varchar(10) null,
utilisateur_fax varchar(25) null,
is_active tinyint(1) null
)
charset = utf8mb4;
还有企业:
create table dBName.entreprise
(
entreprise_id smallint(5) unsigned auto_increment
primary key,
entreprise_nom varchar(100) null,
entreprise_siret char(14) null,
entreprise_telephone char(10) null,
entreprise_salesforce_number varchar(100) null,
entreprise_compte_client varchar(100) null,
entreprise_raison_sociale varchar(100) null,
entreprise_APE varchar(25) null,
entreprise_image_link varchar(255) null,
adresse_id mediumint unsigned null,
constraint FK_entreprise_adresse_id
foreign key (adresse_id) references dBName.adresse (adresse_id)
)
charset = utf8mb4;
我不明白为什么我要处理错误...并且有些帮助可以对我有很大帮助。。谢谢。
答案 0 :(得分:1)
在drop_duplicates()
表中,列Commande
通过外键引用映射到bdc_managed_by_user_id
表的utilisateur_id
列。
这意味着,每当您在utilisateur
表中插入一行时,相应的Commande
必须是bdc_managed_by_user_id
表中存在的utilisateur_id
之一。如果没有,则会出现上述错误。
这称为外键约束,您可以查看描述其工作原理的this示例。