У меня есть эта таблица:Mysql: Код ошибки: 1452. Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не удается
CREATE TABLE comments(
comment_id int(11) NOT NULL auto_increment,
user_id int(11) NOT NULL,
product_id int(11) NOT NULL,
comment_text varchar(1000) COLLATE utf8_czech_ci NOT NULL,
uploaded datetime NOT NULL,
primary key(comment_id),
constraint fk_user_comments foreign key(user_id) references user(user_id) ON UPDATE CASCADE ON DELETE CASCADE,
constraint fk_product_comments foreign key(product_id) references product(product_id) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
и я пытаюсь вставить данные в эту таблицу.
INSERT INTO comments(user_id,product_id,comment_text,uploaded) VALUES(1,'brbr',1,Now());
Но по какой-то причине, я получаю эту ошибку:
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`project`.`comments`, CONSTRAINT `fk_product_comments` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON DELETE CASCADE ON UPDATE CASCADE)
пользователя с идентификатором 1 существует и продукт с идентификатором 1 существует, так что теперь я понятия не имею, Что вызывает проблему.
Вы не вставляете значение для вашего основного ключа comment_id. Это не правильно. Исправьте это в первую очередь. А также вы можете поделиться структурой и данными из ваших таблиц продуктов и пользователей? И product_id, объявленный как int, предоставляет строковое значение, что неверно. Вот почему ваш запрос выходит из строя. – Venkat
Ох ф ... меня. Теперь я чувствую себя глупым: D. Благодарю. – NoSkilz
@Venkat: _ «Вы не вставляете значение для вашего основного ключа comment_id. Это неправильно» _ Да? Это поле 'auto_increment'. Все дело в том, чтобы не устанавливать его самостоятельно. –