programing

1452 - 하위 행을 추가하거나 업데이트할 수 없습니다.

css3 2023. 7. 29. 08:47

1452 - 하위 행을 추가하거나 업데이트할 수 없습니다.

데이터베이스(MariaDB 사용)에서 새 행을 삽입하는 데 문제가 있습니다.

다음과 같은 오류가 있습니다.

하위 행을 추가하거나 업데이트할 수 없습니다. 외부 키 제약 조건이 실패합니다.DbName_boutique.Commande제약 조건bdc_managed_by___fk외부 키(bdc_managed_by_user_id) 참조utilisateur(utilisateur_id) 명령어에 삽입(lien_devis, lien_bdc, end_devis, bdc_status, devis_created_by_user_id, bdc_managed_by_user_id, enterprise_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());

$unknown은 나중에 다른 컨트롤러에서 사용한 값입니다.

내 테이블 "커맨드"는 다음과 같이 구성됩니다.

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;

왜 내가 오류를 범하는지 이해할 수 없습니다...그리고 약간의 도움이 저에게 많은 도움이 될 수 있습니다.감사해요.

Commande표, 열bdc_managed_by_user_id에 매핑됩니다.utilisateur_id의 열.utilisateur외부 키 참조를 통한 테이블입니다.

즉, 행을 삽입할 때마다Commande테이블, 해당bdc_managed_by_user_id그 중 하나여야 합니다.utilisateur_id에 있는.utilisateur표. 그렇지 않으면 위와 같은 오류가 발생합니다.

이를 외부 키 제약 조건이라고 하며, 이 예제를 통해 작동 방식을 설명할 수 있습니다.

언급URL : https://stackoverflow.com/questions/54927223/1452-cannot-add-or-update-a-child-row