1452 - Невозможно добавить или обновить дочернюю строку - PullRequest
0 голосов
/ 28 февраля 2019

У меня проблема с базой данных (с использованием MariaDB) для вставки новой строки

I При следующих ошибках

Невозможно добавить или обновить дочернюю строку: внешний ключограничение не выполнено (DbName_boutique. Commande, CONSTRAINT bdc_managed_by___fk ИНОСТРАННЫЙ КЛЮЧ (bdc_managed_by_user_id) ССЫЛКИ utilisateur (utilisateur_id)) INSERT INTO Commande (lien_devis, lien_bdc, end_devis, bdc_status, devis_created_id_ser_by_server) by_server

У меня есть этот код на моем контроллере:

$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 - это значения, которые я использовал позже в другом контроллере.

Моя таблица "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;

И entreprise:

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;

Я не понимаю, почему яЯ вижу ошибку ... И немного помощи может мне сильно помочь .. Спасибо.

1 Ответ

0 голосов
/ 28 февраля 2019

В таблице Commande столбец bdc_managed_by_user_id отображается в столбец utilisateur_id таблицы utilisateur через ссылку на внешний ключ.

Это означает, что всякий раз, когда вы вставляете строку в таблицу Commande, соответствующий bdc_managed_by_user_id должен быть одним из utilisateur_id, присутствующих в таблице utilisateur.Если нет, вы получите вышеуказанную ошибку.

Это называется ограничение внешнего ключа, и вы можете взглянуть на этот пример, описывающий, как это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...