2
Uppon试图删除我的表中的一条记录我得到以下内容。MySQL帮助不能删除行(errno:150)外键约束
#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`pasremotedb`.`plans`, CONSTRAINT `FK_plans` FOREIGN KEY (`plan_id`) REFERENCES `plan_options` (`plan_id`))
所以我做了一些研究,看起来像我有一些搞砸外键。我试图删除密钥,但后来我得到了这个。
mysql> ALTER TABLE `plan_options` DROP INDEX `plan_id`;
ERROR 1025 (HY000): Error on rename of './pasremotedb/#sql-1c0f_31ea' to './pasremotedb/plan_options' (errno: 150)
做了一些更研究,决定做一个SHOW INNODB STATUS
要获取的出来是LATEST FOREIGN KEY ERROR
:
110824 15:07:33 Error in foreign key constraint of table pasremotedb/plans:
there is no index in referenced table which would contain
the columns as the first columns, or the data types in the
referenced table do not match the ones in table. Constraint:
,
CONSTRAINT "FK_plans" FOREIGN KEY ("plan_id") REFERENCES "plan_options" ("plan_id")
The index in the foreign key in table is "PRIMARY"
See http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html
for correct foreign key definition.
这就是据我可以得到的。我对MySQL dbs还不是很了解,而且当涉及到外键时肯定会挂断。有人可以帮忙吗?
它看起来像涉及的两个表是plans
和plan_options
。这两者的结构如下:
--
-- Table structure for table `plan_options`
--
CREATE TABLE IF NOT EXISTS `plan_options` (
`account_id` int(11) NOT NULL,
`plan_id` tinyint(1) NOT NULL,
`discipline_id` int(2) NOT NULL,
`practice_type_id` int(1) NOT NULL,
`discipline_other` varchar(100) NOT NULL,
PRIMARY KEY (`account_id`),
KEY `plan_id` (`plan_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `plan_options`
--
INSERT INTO `plan_options` (`account_id`, `plan_id`, `discipline_id`, `practice_type_id`, `discipline_other`) VALUES
(1, 3, 5, 1, ''),
(2, 2, 3, 1, ''),
(3, 1, 6, 1, ''),
(4, 2, 1, 2, ''),
(5, 3, 1, 1, ''),
(6, 2, 5, 1, ''),
(7, 2, 3, 1, ''),
(12, 2, 7, 2, 'MD'),
(13, 1, 2, 2, ''),
(14, 3, 1, 2, ''),
(16, 1, 1, 2, ''),
(18, 2, 7, 1, 'AMA Guides'),
(21, 2, 5, 1, '');
--
-- Constraints for dumped tables
--
--
-- Constraints for table `plan_options`
--
ALTER TABLE `plan_options`
ADD CONSTRAINT `FK_plan_options` FOREIGN KEY (`account_id`) REFERENCES `account_details` (`account_id`);
--
-- Table structure for table `plans`
--
CREATE TABLE IF NOT EXISTS `plans` (
`plan_id` tinyint(1) NOT NULL AUTO_INCREMENT,
`plan_name` varchar(50) NOT NULL,
PRIMARY KEY (`plan_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
--
-- Dumping data for table `plans`
--
INSERT INTO `plans` (`plan_id`, `plan_name`) VALUES
(1, 'Gold'),
(2, 'Platinum'),
(3, 'Supremacy');
--
-- Constraints for dumped tables
--
--
-- Constraints for table `plans`
--
ALTER TABLE `plans`
ADD CONSTRAINT `FK_plans` FOREIGN KEY (`plan_id`) REFERENCES `plan_options` (`plan_id`);