我有以下兩個MySQL表的 '孩子' 表具有DELETE CASCADE動作從 '父' 設置:DELETE CASCADE中的MySQL
父表
CREATE TABLE `userdetails` (
`userid` int(6) NOT NULL auto_increment,
`forename` varchar(20) NOT NULL,
`surname` varchar(30) NOT NULL,
`emailaddress` varchar(150) NOT NULL,
`password` varchar(200) NOT NULL,
`passwordhint` varchar(20) NOT NULL,
`subscriptionexpiration` date NOT NULL,
`salt` varchar(200) NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
子表
CREATE TABLE `locations` (
`userid` int(6) NOT NULL,
`locationid` int(6) NOT NULL auto_increment,
`locationname` varchar(80) NOT NULL,
PRIMARY KEY (`locationid`),
KEY `userid` (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
--
-- Constraints for dumped tables
--
--
-- Constraints for table `locations`
--
ALTER TABLE `locations`
ADD CONSTRAINT `locations_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `userdetails` (`userid`) ON DELETE CASCADE;
我再嘗試運行下面的PHP腳本:
<?php
require("phpfile.php");
// Gets data from URL parameters
$userid = $_POST["userid"];
$locationname = $_POST["locationname"];
// Opens a connection to a MySQL server
$connection = mysql_connect ("hostname", $username, $password);
if (!$connection) {
die('Not connected : ' . mysql_error());
}
// Set the active MySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die ('Can\'t use db : ' . mysql_error());
}
// Insert new row with user data
$query = "INSERT INTO locations (userid, locationname) VALUES ('$userid', '$locationame')";
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
,我收到此錯誤:
Invalid query: Cannot add or update a child row: a foreign key constraint fails (`dbname/locations`, CONSTRAINT `locations_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `userdetails` (`userid`) ON DELETE CASCADE)
我不知道爲什麼我得到這個,因爲在父表中的記錄。我一直在這個工作了幾個小時,我只是找不到答案。
我只是想知道是否有人可以看看這個請讓我知道我要去哪裏錯了。
非常感謝
您的'detectlocations'表在哪裏?您正在執行插入操作,但是在哪裏?您需要在子表中首先插入父表中。不是相反的。 – B4NZ41 2012-02-01 17:08:05
嗨@Fernando,非常感謝您看我的帖子,並道歉,因爲它包含一些拼寫錯誤。我現在糾正了這些。親切的問候 – IRHM 2012-02-01 17:47:02
你需要先插入userdetails'原因位置是一個子表,它依賴於userdetails。第一位用戶在位置之後。對? – B4NZ41 2012-02-01 17:56:42