當我做這樣的事情:問題刪除行
DELETE FROM users_has_pais WHERE users_id = 151
我收到以下錯誤信息:
SQLSTATE [23000]:誠信約束衝突:1451無法刪除或更新父行:外鍵約束失敗(
gisele
。users_has_pais
,CONSTRAINTusers_has_pais_ibfk_3
FOREIGN KEY(users_id
)參考文獻users
(id
)ON DELETE NO ACTION ON UPDATE NO ACTION)
我不知道是什麼問題,但我猜它有什麼用ON做DELETE NO ACTION。我不知道我應該改變,要雖然...參考我貼我的表結構的轉儲:
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(50) DEFAULT NULL,
`password` varchar(250) DEFAULT NULL,
`url` varchar(50) DEFAULT NULL,
`responsable` varchar(50) DEFAULT NULL,
`role` varchar(25) DEFAULT NULL,
`fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=162 ;
CREATE TABLE IF NOT EXISTS `pais` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pais` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `pais` (`pais`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
users_has_pais | CREATE TABLE `users_has_pais` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`users_id` int(11) NOT NULL,
`pais_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user` (`users_id`),
KEY `index3` (`pais_id`),
KEY `users_id` (`users_id`),
KEY `pais_id` (`pais_id`),
CONSTRAINT `users_has_pais_ibfk_3` FOREIGN KEY (`users_id`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `users_has_pais_ibfk_2` FOREIGN KEY (`pais_id`) REFERENCES `pais` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=latin1 |
編輯: pastie of the constraint information
你能找到併發布約束「users_has_pais_ibfk_3」的定義嗎? – mtazva 2011-06-16 19:24:54
@mtazva我已經複製了我在留言板中留下的關於約束鏈中的約束條件的信息。不確定這是否是你要求我的,但 – 2011-06-16 19:42:33
約束似乎是正確定義的 - 它只是一個預感作爲@Adrian)。對不起,那是我唯一的線索。如果有其他事情打我,我會回來。 – mtazva 2011-06-16 20:02:46