2017-01-12 2 views
0

Je suis begginer ici, tout ce que j'essaie de faire est d'insérer dans un champ de table qui est une clé étrangère, s'il vous plaît jeter un oeil à ces deux tables:MySQL # 1452 - Impossible d'ajouter ou de mettre à jour une ligne enfant

tableau Catégorie

CREATE TABLE IF NOT EXISTS `categorie` (
    `id_cat` int(2) NOT NULL AUTO_INCREMENT, 
    `nom_cat` varchar(20) NOT NULL, 
    PRIMARY KEY (`id_cat`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

et une table Annonce

CREATE TABLE IF NOT EXISTS `annonce` (
    `id_annonce` int(6) NOT NULL AUTO_INCREMENT, 
    `titre` varchar(30) NOT NULL, 
    `description` varchar(255) NOT NULL, 
    `tarif` float NOT NULL, 
    `deplacement` int(2) NOT NULL, 
    `date_creation` date NOT NULL, 
    `date_expiration` date NOT NULL, 
    `image` varchar(255) NOT NULL, 
    `id_cat` int(2) DEFAULT NULL, 
    PRIMARY KEY (`id_annonce`), 
    KEY `id_cat` (`id_cat`), 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

Après la liaison de la fo régnera id_cat touche manuellement (ON UPDATE SET NULL ON DELETE CASCADE) qui est la façon dont le db ressemble

DB designer

et après l'insertion de données dans la table Catégorie il ressemble à ceci

Categorie table

Mais malheureusement je ne pouvais pas exécuter cette requête:

INSERT INTO annonce (id_annonce, titre, description, tarif, deplacement, 
        date_creation, date_expiration,id_cat) 
VALUES('','anything','anything',2,3,'2017-04-01','2017-04-01',2) 

l'erreur dit:

1452 - Impossible d'ajouter ou mettre à jour une ligne enfant: une contrainte de clé étrangère échoue (lametcom. annonce, CONTRAINTE annonce_ibfk_2 FOREIGN KEY (id_cat) RÉFÉRENCES annonce (id_cat) ON DELETE SET NULL ON UPDATE CASCADE)

peut-elle aider quelqu'un s'il vous plaît et désolé pour mon pauvre anglais j'espère que vous pouvez comprendre ce que je veux dire

+0

insertion d'une chaîne vide dans une colonne non nulle. omettre cette colonne et laisser l'incrément automatique s'inquiéter à ce sujet: 'INSERT INTO annonce (titre, description, tarif, déplacement, date_creation, date_expiration, id_cat) VALEURS ('n'importe quoi', 'n'importe quoi', '2,3', '2017- 04-01 ',' 2017-04-01 ', 2) ' –

+1

Merci pour le conseil que je ne sais pas que ça marche;) – user7412247

Répondre

1

Votre contrainte de clé étrangère est incorrecte. Vous avez

FOREIGN KEY id_cat REFERENCES annonce (id_cat) 

mais il devrait être:

FOREIGN KEY id_cat REFERENCES categorie (id_cat) 

Le nom de la table dans la contrainte de clé étrangère doit être la table que vous liez.

+0

Merci beaucoup, je me sentais tellement stupide de faire ce genre de fautes: D – user7412247