MySQL Forums
Forum List  »  General

Foreign Key bug?
Posted by: Michael Reed
Date: June 13, 2009 11:10AM

On my remote server (MySQL version 5.0.37), the last insert into xtable results in:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`newtest/xtable`, CONSTRAINT `xtable_fk2` FOREIGN KEY (`subresource_types_resources_id`) REFERENCES `subresource_types` (`resources_id`) ON DELETE NO ACTION ON UPDATE NO ACTION)

It does not result in an error on my local server (MySQL version 5.0.51a). Am I doing something wrong, or is it a bug in 5.0.37?

Thank you



INSERT INTO `subresource_resource_types` (`id`, `data`) VALUES (1, 'hello');
INSERT INTO `subresource_resources` (`id`, `data`, `subresource_resource_types_id`) VALUES (1, 'hello', 1);
INSERT INTO `subsubresource_types` (`data`, `subresource_resources_id`) VALUES ('hello', 1);
INSERT INTO `resources` (`id`, `data`) VALUES (1, 'hello');
INSERT INTO `subresource_types` (`data`, `resources_id`) VALUES ('hello', 1);

INSERT INTO `xtable` (`subresource_resources_id`, `subresource_types_resources_id`) VALUES (1, 1);



SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

CREATE SCHEMA IF NOT EXISTS `newtest` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `newtest`;

-- -----------------------------------------------------
-- Table `newtest`.`resources`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `newtest`.`resources` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`data` TEXT NOT NULL ,
PRIMARY KEY (`id`) )
PACK_KEYS = 0
ROW_FORMAT = DEFAULT;


-- -----------------------------------------------------
-- Table `newtest`.`subresource_types`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `newtest`.`subresource_types` (
`data` TEXT NULL ,
`resources_id` INT UNSIGNED NOT NULL ,
PRIMARY KEY (`resources_id`) ,
INDEX `fk_subresource_types_resources` (`resources_id` ASC) ,
CONSTRAINT `fk_subresource_types_resources`
FOREIGN KEY (`resources_id` )
REFERENCES `newtest`.`resources` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
PACK_KEYS = 0
ROW_FORMAT = DEFAULT;


-- -----------------------------------------------------
-- Table `newtest`.`subresource_resource_types`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `newtest`.`subresource_resource_types` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`data` TEXT NOT NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `newtest`.`subresource_resources`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `newtest`.`subresource_resources` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`data` TEXT NOT NULL ,
`subresource_resource_types_id` INT UNSIGNED NULL ,
PRIMARY KEY (`id`) ,
INDEX `fk_subresource_resources_subresource_resource_types` (`subresource_resource_types_id` ASC) ,
CONSTRAINT `fk_subresource_resources_subresource_resource_types`
FOREIGN KEY (`subresource_resource_types_id` )
REFERENCES `newtest`.`subresource_resource_types` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `newtest`.`subsubresource_types`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `newtest`.`subsubresource_types` (
`data` TEXT NOT NULL ,
`subresource_resources_id` INT UNSIGNED NOT NULL ,
PRIMARY KEY (`subresource_resources_id`) ,
INDEX `fk_subsubresource_types_subresource_resources` (`subresource_resources_id` ASC) ,
CONSTRAINT `fk_subsubresource_types_subresource_resources`
FOREIGN KEY (`subresource_resources_id` )
REFERENCES `newtest`.`subresource_resources` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
PACK_KEYS = 0
ROW_FORMAT = DEFAULT;


-- -----------------------------------------------------
-- Table `newtest`.`xtable`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `newtest`.`xtable` (
`subresource_resources_id` INT UNSIGNED NOT NULL ,
`subresource_types_resources_id` INT UNSIGNED NOT NULL ,
PRIMARY KEY (`subresource_resources_id`, `subresource_types_resources_id`) ,
INDEX `xtable_fk1` (`subresource_resources_id` ASC) ,
INDEX `xtable_fk2` (`subresource_types_resources_id` ASC) ,
CONSTRAINT `xtable_fk1`
FOREIGN KEY (`subresource_resources_id` )
REFERENCES `newtest`.`subresource_resources` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `xtable_fk2`
FOREIGN KEY (`subresource_types_resources_id` )
REFERENCES `newtest`.`subresource_types` (`resources_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;



SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

Options: ReplyQuote


Subject
Written By
Posted
Foreign Key bug?
June 13, 2009 11:10AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.