MySQL 외국 키 제약 조건 혼란
-
06-07-2019 - |
문제
모두 MySQL에 다음과 같은 '사용자'테이블이 있습니다.
CREATE TABLE `users` (
`uid` int(11) NOT NULL auto_increment,
`fname` varchar(50) NOT NULL,
`lname` varchar(50) NOT NULL,
`role` varchar(75) NOT NULL,
`region` tinyint(4) unsigned default NULL,
`username` varchar(25) NOT NULL,
`password` varchar(75) NOT NULL,
`new_pass` varchar(5) default NULL,
PRIMARY KEY (`uid`),
UNIQUE KEY `username` (`username`),
KEY `role` (`role`),
KEY `region` (`region`),
CONSTRAINT `users_ibfk_3` FOREIGN KEY (`role`) REFERENCES `role` (`role`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `users_ibfk_4` FOREIGN KEY (`region`) REFERENCES `region` (`region`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8
나는 '지역'이 지역 테이블에 대한 외국 키로 설정되어 있습니다 - 지역. 지역 '
해당 사용자. 지역은 NULL로 선언됩니다. 나는 MySQL에서 열쇠가 null이 아닌 것으로 설정된 경우에만 외국 키 contstraint가 시행된다는 인상을 받았습니다.
그러나 PHP 응용 프로그램에 널 영역이있는 사용자를 삽입하려고하면 다음과 같은 오류가 발생합니다.
ERROR: Cannot add or update a child row: a foreign key constraint fails (`reslife4/users`, CONSTRAINT `users_ibfk_4` FOREIGN KEY (`region`) REFERENCES `region` (`region`) ON DELETE CASCADE ON UPDATE CASCADE)
그러나 PHPMyAdmin과 같은 PHP 응용 프로그램 외부 에이 사용자를 추가하려면이 사용자를 추가하면 가능합니다.
무슨 일이 일어나고 있는지 아는 사람이 있습니까?
해결책
귀하의 신청서는NULL
가치 region
.
활성화 쿼리 로그 그리고 정확히 당신의 것이 무엇인지 확인하십시오 PHP
테이블에 삽입하려고합니다.
제휴하지 않습니다 StackOverflow