У меня проблема с моим db, где я не могу вставить в него данные, он продолжает показывать мне эту ошибку: Mysql: Код ошибки: 1452. Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа завершается с ошибкой. Я не пытаюсь создавать новые внешние ключи, я просто пытаюсь вставить данные в таблицы У меня есть 4 таблицы, вот код создания ниже:Ошибка внешнего ключа MySQL при вставке в таблицы (ошибка 1452), уже создана FKs
CREATE TABLE IF NOT EXISTS `projectx`.`restaurants` (
`restaurant_id` INT NOT NULL AUTO_INCREMENT COMMENT '',
`restaurant_name` VARCHAR(45) NOT NULL COMMENT '',
PRIMARY KEY (`restaurant_id`) COMMENT '',
UNIQUE INDEX `restaurant_id_UNIQUE` (`restaurant_id` ASC) COMMENT '')
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `projectx`.`table_area`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `projectx`.`table_area` (
`area_id` INT NOT NULL AUTO_INCREMENT COMMENT '',
`width` INT NOT NULL COMMENT '',
`height` INT NOT NULL COMMENT '',
PRIMARY KEY (`area_id`) COMMENT '',
UNIQUE INDEX `area_id_UNIQUE` (`area_id` ASC) COMMENT '')
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `projectx`.`table_position`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `projectx`.`table_position` (
`position_id` INT NOT NULL AUTO_INCREMENT COMMENT '',
`pos_x` INT NOT NULL COMMENT '',
`pos_y` INT NOT NULL COMMENT '',
PRIMARY KEY (`position_id`) COMMENT '',
UNIQUE INDEX `position_id_UNIQUE` (`position_id` ASC) COMMENT '')
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `projectx`.`restaurant_tables`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `projectx`.`restaurant_tables` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '',
`table_id` INT NOT NULL COMMENT '',
`restaurant_id` INT NOT NULL COMMENT '',
`table_kind` VARCHAR(10) NULL COMMENT '',
`number_of_seats` INT NOT NULL COMMENT '',
`is_taken` TINYINT(1) NOT NULL COMMENT '',
`table_area_id` INT NOT NULL COMMENT '',
`table_position_id` INT NOT NULL COMMENT '',
PRIMARY KEY (`id`, `restaurant_id`, `table_area_id`, `table_position_id`) COMMENT '',
UNIQUE INDEX `id_UNIQUE` (`id` ASC) COMMENT '',
INDEX `fk_restaurant_tables_restaurants_idx` (`restaurant_id` ASC) COMMENT '',
INDEX `fk_restaurant_tables_table_area1_idx` (`table_area_id` ASC) COMMENT '',
INDEX `fk_restaurant_tables_table_position1_idx` (`table_position_id` ASC) COMMENT '',
CONSTRAINT `fk_restaurant_tables_restaurants`
FOREIGN KEY (`restaurant_id`)
REFERENCES `projectx`.`restaurants` (`restaurant_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_restaurant_tables_table_area1`
FOREIGN KEY (`table_area_id`)
REFERENCES `projectx`.`table_area` (`area_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_restaurant_tables_table_position1`
FOREIGN KEY (`table_position_id`)
REFERENCES `projectx`.`table_position` (`position_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Вставьте код:
insert into restaurant_tables(id,table_id,restaurant_id,table_kind,number_of_seats,is_taken,table_area_id,table_position_id) values
(1,1,1,'square',4,0,1,1);
В принципе идея состоит в том, чтобы один ресторан мог иметь больше таблиц, и каждая таблица должна иметь только одну ширину, высоту и pos_x, pos_y. Что я делаю неправильно здесь? Является ли таблица макета и ограничений хорошими? Любая помощь была бы потрясающей! Благодаря!
Возможный дубликат [Ошибка Mysql 1452 - Невозможно добавить или обновить дочернюю строку: сбой ограничения внешнего ключа) (http://stackoverflow.com/questions/1253459/mysql-error-1452-cannot-add-or- update-a-child-row-a-foreign-key-constraint-fa) – miken32
Не жалуется, что вы пытаетесь добавить новый FK, он говорит, что данные, которые вы вставляете, будут нарушать существующее ограничение FK. В таблице ресторанов есть запись с рестораном_id = 1? Как насчет табличных областей и таблиц позиций? Вы не можете ссылаться на идентификатор в этих таблицах из того, что вы пытаетесь вставить в tables_tables, если только этот идентификатор уже существует в таблицах, помеченных ограничениями FK. –
В таблице ресторанов у меня есть одна запись с рестораном_id = 1 и name = bla, то же самое касается области и таблицы позиций. Это ответ на ваш вопрос? Прошу прощения, но я не знаю много о sql, кроме основ, мне не нужно было многого ... – vibetribe93