2010-04-24 5 views
3

이 항목에 대한 다른 사람들의 질문을 살펴본 적이 있지만 내 오류가 어디서 왔는지 찾을 수 없습니다. 어떤 도움이라도 대단히 감사하겠습니다.MySQL 오류 1452 - 자식 행을 추가하거나 업데이트 할 수 없습니다. 외래 키 제약 조건이 적용되지 않습니다.

CREATE TABLE stocks (
id INT AUTO_INCREMENT NOT NULL, 
user_id INT(11) UNSIGNED NOT NULL, 
ticker VARCHAR(20) NOT NULL, 
name VARCHAR(20), 
rating INT(11), 
position ENUM("strong buy", "buy", "sell", "strong sell", "neutral"), 
next_look DATE, 
privacy ENUM("public", "private"), 
PRIMARY KEY(id), 
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE 
) 
ENGINE=InnoDB DEFAULT CHARSET=utf8; 



CREATE TABLE IF NOT EXISTS `stocks_tags` (
    `stock_id` INT NOT NULL, 
    `tag_id` INT NOT NULL, 
    PRIMARY KEY (`stock_id`,`tag_id`), 
    KEY `fk_stock_tag` (`tag_id`), 
    KEY `fk_tag_stock` (`stock_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

ALTER TABLE `stocks_tags` 
    ADD CONSTRAINT `fk_stock_tag` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, 
    ADD CONSTRAINT `fk_tag_stock` FOREIGN KEY (`stock_id`) REFERENCES `stocks` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; 



CREATE TABLE tags(
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, 
tags VARCHAR(30), 
UNIQUE(tags) 
) 
ENGINE=INNODB DEFAULT CHARSET=utf8; 

그리고 오류 내가 갖는 : 나는 다른 사람이 비슷한 문제가 있다고 볼 않았다

Database_Exception [ 1452 ]: Cannot add or update a child row: a foreign key constraint 
fails (`ddmachine`.`stocks_tags`, CONSTRAINT `fk_stock_tag` FOREIGN KEY (`tag_id`) REFERENCES 
`tags` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [ INSERT INTO `stocks_tags` (`stock_id`, 
`tag_id`) VALUES (19, 'cash') ] 

내가 문제를 찾을 도움이 될 것을 생각할 수만큼 포함하고있어 열거 형 열을 기반으로하지만 생각하지 않습니다.

답변

4

즉, tag_id cash이 태그 테이블에서 누락되었습니다. 즉, tag_id가 정수가 아니어야합니까?

네, 오늘 너무 오래 컴퓨터에보고되어 있어야합니다

INSERT INTO `stocks_tags` (`stock_id`, `tag_id`) VALUES (19, 'cash') 
+1

(이 쿼리에 말)! 얼마나 우스운가요. 나는 이것이 ORM을 사용한다는 사실에 의해 복잡해 졌다고 생각한다. 그래서 나의 모델은 틀린 것이다. – dscher

관련 문제